22
33import dev .felnull .fnjl .math .FNComplex ;
44import dev .felnull .fnjl .math .FNVec2d ;
5+ import dev .felnull .fnjl .math .FNVec2f ;
56import dev .felnull .fnjl .math .FNVec2i ;
7+ import dev .felnull .fnjl .tuple .FNPair ;
8+ import dev .felnull .fnjl .tuple .SimpleFNPair ;
69
710import java .util .function .Consumer ;
811
912/**
10- * Math関係
13+ * 計算関係
1114 *
1215 * @author MORIMORI0317
1316 * @since 1.0
1417 */
1518public 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 ;
0 commit comments