Skip to content

Commit 7d7c955

Browse files
committed
1.37
1 parent 8d5bc1f commit 7d7c955

File tree

7 files changed

+222
-7
lines changed

7 files changed

+222
-7
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package dev.felnull.fnjl;
22

33
public class FNJLBuildIn {
4-
protected static final String VERSION = "1.36";
4+
protected static final String VERSION = "1.37";
55
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package dev.felnull.fnjl.tuple;
2+
3+
public interface FNPair<K, E> {
4+
public K getKey();
5+
6+
public E getEntry();
7+
8+
default K getLeft() {
9+
return getKey();
10+
}
11+
12+
default E getRight() {
13+
return getEntry();
14+
}
15+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package dev.felnull.fnjl.tuple;
2+
3+
import java.util.Objects;
4+
5+
public class SimpleFNPair<K, E> implements FNPair<K, E> {
6+
private final K key;
7+
private final E entry;
8+
9+
public SimpleFNPair(K key, E entry) {
10+
this.key = key;
11+
this.entry = entry;
12+
}
13+
14+
@Override
15+
public K getKey() {
16+
return key;
17+
}
18+
19+
@Override
20+
public E getEntry() {
21+
return entry;
22+
}
23+
24+
@Override
25+
public String toString() {
26+
return "[" + key + "," + entry + "]";
27+
}
28+
29+
@Override
30+
public boolean equals(Object o) {
31+
if (this == o) return true;
32+
if (o == null || getClass() != o.getClass()) return false;
33+
SimpleFNPair<?, ?> that = (SimpleFNPair<?, ?>) o;
34+
return Objects.equals(key, that.key) && Objects.equals(entry, that.entry);
35+
}
36+
37+
@Override
38+
public int hashCode() {
39+
return Objects.hash(key, entry);
40+
}
41+
}

common/src/main/java/dev/felnull/fnjl/util/FNMath.java

Lines changed: 159 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,23 @@
22

33
import dev.felnull.fnjl.math.FNComplex;
44
import dev.felnull.fnjl.math.FNVec2d;
5+
import dev.felnull.fnjl.math.FNVec2f;
56
import dev.felnull.fnjl.math.FNVec2i;
7+
import dev.felnull.fnjl.tuple.FNPair;
8+
import dev.felnull.fnjl.tuple.SimpleFNPair;
69

710
import java.util.function.Consumer;
811

912
/**
10-
* Math関係
13+
* 計算関係
1114
*
1215
* @author MORIMORI0317
1316
* @since 1.0
1417
*/
1518
public class FNMath {
19+
/**
20+
* 絶対零度
21+
*/
1622
public static final double ABSOLUTE_ZERO_TEMP = -273.15f;
1723

1824
/**
@@ -212,6 +218,13 @@ public static void generateColorMandelbrot(int width, int height, double posX, d
212218
}
213219
}
214220

221+
/**
222+
* 幅と高さのスケールを取得
223+
*
224+
* @param w 幅
225+
* @param h 高さ
226+
* @return スケール
227+
*/
215228
public static FNVec2d scale(double w, double h) {
216229
if (w > h) {
217230
return new FNVec2d(1, h / w);
@@ -220,6 +233,151 @@ public static FNVec2d scale(double w, double h) {
220233
}
221234
}
222235

236+
/**
237+
* 値の中で最も小さい値を出力
238+
*
239+
* @param value 値
240+
* @param values 値配列
241+
* @return 最も小さい値
242+
*/
243+
public static int min(int value, int... values) {
244+
int min = value;
245+
for (int i : values) {
246+
if (min > i)
247+
min = i;
248+
}
249+
return min;
250+
}
251+
252+
/**
253+
* 値の中で最も小さい値を出力
254+
*
255+
* @param value 値
256+
* @param values 値配列
257+
* @return 最も小さい値
258+
*/
259+
public static float min(float value, float... values) {
260+
float min = value;
261+
for (float i : values) {
262+
if (min > i)
263+
min = i;
264+
}
265+
return min;
266+
}
267+
268+
/**
269+
* 値の中で最も小さい値を出力
270+
*
271+
* @param value 値
272+
* @param values 値配列
273+
* @return 最も小さい値
274+
*/
275+
public static double min(double value, double... values) {
276+
double min = value;
277+
for (double i : values) {
278+
if (min > i)
279+
min = i;
280+
}
281+
return min;
282+
}
283+
284+
/**
285+
* 値の中で最も小さい値を出力
286+
*
287+
* @param value 値
288+
* @param values 値配列
289+
* @return 最も小さい値
290+
*/
291+
public static long min(long value, long... values) {
292+
long min = value;
293+
for (long i : values) {
294+
if (min > i)
295+
min = i;
296+
}
297+
return min;
298+
}
299+
300+
/**
301+
* 値の中で最も大きい値を出力
302+
*
303+
* @param value 値
304+
* @param values 値配列
305+
* @return 最も大きい値
306+
*/
307+
public static int max(int value, int... values) {
308+
int max = value;
309+
for (int i : values) {
310+
if (max < i)
311+
max = i;
312+
}
313+
return max;
314+
}
315+
316+
/**
317+
* 値の中で最も大きい値を出力
318+
*
319+
* @param value 値
320+
* @param values 値配列
321+
* @return 最も大きい値
322+
*/
323+
public static float max(float value, float... values) {
324+
float max = value;
325+
for (float i : values) {
326+
if (max < i)
327+
max = i;
328+
}
329+
return max;
330+
}
331+
332+
/**
333+
* 値の中で最も大きい値を出力
334+
*
335+
* @param value 値
336+
* @param values 値配列
337+
* @return 最も大きい値
338+
*/
339+
public static double max(double value, double... values) {
340+
double max = value;
341+
for (double i : values) {
342+
if (max < i)
343+
max = i;
344+
}
345+
return max;
346+
}
347+
348+
/**
349+
* 値の中で最も大きい値を出力
350+
*
351+
* @param value 値
352+
* @param values 値配列
353+
* @return 最も大きい値
354+
*/
355+
public static long max(long value, long... values) {
356+
long max = value;
357+
for (long i : values) {
358+
if (max < i)
359+
max = i;
360+
}
361+
return max;
362+
}
363+
364+
/**
365+
* 4点の平面から2点の平面の座標へ変換
366+
*
367+
* @param v1 座標1
368+
* @param v2 座標2
369+
* @param v3 座標3
370+
* @param v4 座標4
371+
* @return 開始座標と終了座標のペア
372+
*/
373+
public static FNPair<FNVec2f, FNVec2f> trans4to2CornerPlanes(FNVec2f v1, FNVec2f v2, FNVec2f v3, FNVec2f v4) {
374+
float stX = min(v1.getX(), v2.getX(), v3.getX(), v4.getX());
375+
float stY = min(v1.getY(), v2.getY(), v3.getY(), v4.getY());
376+
377+
float enX = max(v1.getX(), v2.getX(), v3.getX(), v4.getX());
378+
float enY = max(v1.getY(), v2.getY(), v3.getY(), v4.getY());
379+
return new SimpleFNPair<>(new FNVec2f(stX, stY), new FNVec2f(enX, enY));
380+
}
223381

224382
public static class PosColorEntry {
225383
private final FNVec2i pos;
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package dev.felnull.fnjltest;
22

3-
import dev.felnull.fnjl.util.FNStringUtil;
3+
import dev.felnull.fnjl.math.FNVec2f;
4+
import dev.felnull.fnjl.util.FNMath;
45

56
public class Main {
67
public static void main(String[] args) {
7-
System.out.println(FNStringUtil.getTimeProgress(1919, 11451419));
8-
//System.out.println(FNStringUtil.getTimeFormat(1000 * 60 * 125 + 5000));
8+
System.out.println(FNMath.trans4to2CornerPlanes(new FNVec2f(0.2f, 0.1f), new FNVec2f(0.2f, 0.75f), new FNVec2f(0.8f, 0.1f), new FNVec2f(0.8f, 0.75f)));
9+
// System.out.println(FNMath.min(1919, 810, 114514, 19, 24, 19, 810, 32));
910
}
1011
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
fnjl_group=dev.felnull
22
fnjl_name=felnull-java-library
3-
fnjl_version=1.36
3+
fnjl_version=1.37
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dev.felnull.fnjln;
22

33
public class FNJLNBuildIn {
4-
protected static final String VERSION = "1.36";
4+
protected static final String VERSION = "1.37";
55

66
protected static final int NATIVE_LIBRARY_VERSION = 1;
77
}

0 commit comments

Comments
 (0)