@@ -237,7 +237,6 @@ public static int OverFlowIndex(int targetIndex, int length)
237
237
/// </summary>
238
238
/// <param name="currentVal"></param>
239
239
/// <param name="targetVal"></param>
240
- /// <returns></returns>
241
240
public static int ApproachTo ( int currentVal , int targetVal )
242
241
{
243
242
if ( currentVal == targetVal )
@@ -253,69 +252,6 @@ public static int ApproachTo(int currentVal, int targetVal)
253
252
return 0 ;
254
253
}
255
254
256
- /// <summary>
257
- /// 計算旋轉的點 (JCS_VECTOR2F)
258
- /// </summary>
259
- /// <param name="point"> 我們要計算的"點" </param>
260
- /// <param name="cos"> Cos 的角度 "Cos(angle)" </param>
261
- /// <param name="sin"> Sin 的角度 "Sin(angle)" </param>
262
- /// <param name="origin"> 以這個"點"為中心旋轉 </param>
263
- /// <returns></returns>
264
- public static Vector3 RotatePointX (
265
- Vector3 point , float cos , float sin , Vector3 origin )
266
- {
267
- return new Vector3 (
268
- point . x ,
269
- origin . z + ( ( point . z - origin . z ) * cos ) - ( ( point . y - origin . y ) * sin ) ,
270
- origin . y + ( ( point . z - origin . z ) * sin ) + ( ( point . y - origin . y ) * cos ) ) ;
271
- }
272
- public static Vector3 RotatePointZ (
273
- Vector3 point , float cos , float sin , Vector3 origin )
274
- {
275
- return new Vector3 (
276
- origin . x + ( ( point . x - origin . x ) * cos ) - ( ( point . y - origin . y ) * sin ) ,
277
- origin . y + ( ( point . x - origin . x ) * sin ) + ( ( point . y - origin . y ) * cos ) ,
278
- point . z ) ;
279
- }
280
- public static Vector3 RotatePointY (
281
- Vector3 point , float cos , float sin , Vector3 origin )
282
- {
283
- return new Vector3 (
284
- origin . x + ( ( point . x - origin . x ) * cos ) - ( ( point . z - origin . z ) * sin ) ,
285
- point . y ,
286
- origin . z + ( ( point . x - origin . x ) * sin ) + ( ( point . z - origin . z ) * cos ) ) ;
287
- }
288
-
289
- /// <summary>
290
- /// 計算旋轉的點 (JCS_VECTOR2F)
291
- /// </summary>
292
- /// <param name="point"> 我們要計算的"點" </param>
293
- /// <param name="cos"> Cos 的角度 "Cos(angle)" </param>
294
- /// <param name="sin"> Sin 的角度 "Sin(angle)" </param>
295
- /// <param name="origin"> 以這個"點"為中心旋轉 </param>
296
- /// <returns></returns>
297
- public static Vector3 RotatePointX ( Vector3 point , Vector3 origin , float angle )
298
- {
299
- return new Vector3 (
300
- point . x ,
301
- origin . y + ( ( Mathf . Cos ( angle ) * ( point . y - origin . y ) ) ) - ( Mathf . Sin ( angle ) * ( point . z - origin . z ) ) ,
302
- origin . z + ( ( Mathf . Sin ( angle ) * ( point . y - origin . y ) ) ) + ( Mathf . Cos ( angle ) * ( point . z - origin . z ) ) ) ;
303
- }
304
- public static Vector3 RotatePointY ( Vector3 point , Vector3 origin , float angle )
305
- {
306
- return new Vector3 (
307
- origin . x + ( ( Mathf . Cos ( angle ) * ( point . x - origin . x ) ) ) - ( Mathf . Sin ( angle ) * ( point . z - origin . z ) ) ,
308
- point . y ,
309
- origin . z + ( ( Mathf . Sin ( angle ) * ( point . x - origin . x ) ) ) + ( Mathf . Cos ( angle ) * ( point . z - origin . z ) ) ) ;
310
- }
311
- public static Vector3 RotatePointZ ( Vector3 point , Vector3 origin , float angle )
312
- {
313
- return new Vector3 (
314
- origin . x + ( ( Mathf . Cos ( angle ) * ( point . x - origin . x ) ) ) - ( Mathf . Sin ( angle ) * ( point . y - origin . y ) ) ,
315
- origin . y + ( ( Mathf . Sin ( angle ) * ( point . x - origin . x ) ) ) + ( Mathf . Cos ( angle ) * ( point . y - origin . y ) ) ,
316
- point . z ) ;
317
- }
318
-
319
255
/// <summary>
320
256
/// check if the vector value is infinity
321
257
/// </summary>
@@ -486,7 +422,7 @@ public static float PythagoreanTheorem(float s1, float s2, TriSides type)
486
422
}
487
423
}
488
424
489
- JCS_Debug . LogError ( "This not suppose to happen here... " ) ;
425
+ JCS_Debug . LogError ( "This not suppose to happen here" ) ;
490
426
491
427
return 0 ;
492
428
}
@@ -515,7 +451,6 @@ public static int GetSingleDigit(int digit, int number)
515
451
return remainder / divider ;
516
452
}
517
453
518
-
519
454
/// <summary>
520
455
/// Count the digit by pass in number you want to count.
521
456
///
@@ -568,7 +503,6 @@ public static float CrossMultiply(float x, float y, float a)
568
503
return ( a * y / x ) ;
569
504
}
570
505
571
-
572
506
/// <summary>
573
507
/// Convert degree to radian.
574
508
/// </summary>
@@ -619,6 +553,153 @@ public static float Tan(float deg)
619
553
return Mathf . Tan ( DegreeToRadian ( deg ) ) ;
620
554
}
621
555
556
+ /// <summary>
557
+ /// Truncate float number.
558
+ ///
559
+ /// If 'digits'=2 and 'value'=1.345698F:
560
+ /// 1.345698F => 1.34
561
+ ///
562
+ /// If 'digits'=2 and 'value'=1.300000F:
563
+ /// 1.300000F => 1.30
564
+ ///
565
+ /// SOURCE(jenchieh): https://social.msdn.microsoft.com/Forums/vstudio/en-US/a8092fd2-1080-416c-8ae1-2bad8c013a21/how-to-round-off-a-float-to-2-decimal-places?forum=csharpgeneral
566
+ /// </summary>
567
+ /// <param name="val"> Value to do truncate. </param>
568
+ /// <param name="digits"> Target shown digit. </param>
569
+ /// <returns> Result value. </returns>
570
+ public static float Truncate ( float val , int digits )
571
+ {
572
+ double mult = Math . Pow ( 10.0 , digits ) ;
573
+ double result = Math . Truncate ( mult * val ) / mult ;
574
+ return ( float ) result ;
575
+ }
576
+
577
+ /// <summary>
578
+ /// Find the greatest common factor.
579
+ /// 最大公因數.
580
+ ///
581
+ /// SOURCE: https://stackoverflow.com/questions/18541832/c-sharp-find-the-greatest-common-divisor
582
+ /// AUTHOR: Drew Noakes
583
+ /// </summary>
584
+ /// <param name="a"> number a. </param>
585
+ /// <param name="b"> number b. </param>
586
+ /// <returns>
587
+ /// greatest common factor for 'a' nd 'b'.
588
+ /// </returns>
589
+ public static int GCD ( int a , int b )
590
+ {
591
+ while ( a != 0 && b != 0 )
592
+ {
593
+ if ( a > b )
594
+ a %= b ;
595
+ else
596
+ b %= a ;
597
+ }
598
+
599
+ return ( a == 0 ) ? b : a ;
600
+ }
601
+
602
+ /// <summary>
603
+ /// Return the positive/negative 1 sign from VAL.
604
+ ///
605
+ /// If the value is 0 then return 0.
606
+ /// </summary>
607
+ /// <param name="val"> Value you want to idenfity. </param>
608
+ /// <returns>
609
+ /// Return 0, if the VAL can't be identify.
610
+ /// Return 1, if the VAL is positive value.
611
+ /// Return -1, if the VAL is negative value.
612
+ /// </returns>
613
+ public static float GetSign ( float val )
614
+ {
615
+ if ( val == 0.0f )
616
+ return 0.0f ;
617
+ else
618
+ {
619
+ if ( IsPositive ( val ) )
620
+ return 1.0f ;
621
+ else
622
+ return - 1.0f ;
623
+ }
624
+ }
625
+
626
+ /// <summary>
627
+ /// 計算旋轉的點 (JCS_VECTOR2F)
628
+ /// </summary>
629
+ /// <param name="point"> 我們要計算的"點" </param>
630
+ /// <param name="cos"> Cos 的角度 "Cos(angle)" </param>
631
+ /// <param name="sin"> Sin 的角度 "Sin(angle)" </param>
632
+ /// <param name="origin"> 以這個"點"為中心旋轉 </param>
633
+ public static Vector3 RotatePointX (
634
+ Vector3 point , float cos , float sin , Vector3 origin )
635
+ {
636
+ return new Vector3 (
637
+ point . x ,
638
+ origin . z + ( ( point . z - origin . z ) * cos ) - ( ( point . y - origin . y ) * sin ) ,
639
+ origin . y + ( ( point . z - origin . z ) * sin ) + ( ( point . y - origin . y ) * cos ) ) ;
640
+ }
641
+ public static Vector3 RotatePointZ (
642
+ Vector3 point , float cos , float sin , Vector3 origin )
643
+ {
644
+ return new Vector3 (
645
+ origin . x + ( ( point . x - origin . x ) * cos ) - ( ( point . y - origin . y ) * sin ) ,
646
+ origin . y + ( ( point . x - origin . x ) * sin ) + ( ( point . y - origin . y ) * cos ) ,
647
+ point . z ) ;
648
+ }
649
+ public static Vector3 RotatePointY (
650
+ Vector3 point , float cos , float sin , Vector3 origin )
651
+ {
652
+ return new Vector3 (
653
+ origin . x + ( ( point . x - origin . x ) * cos ) - ( ( point . z - origin . z ) * sin ) ,
654
+ point . y ,
655
+ origin . z + ( ( point . x - origin . x ) * sin ) + ( ( point . z - origin . z ) * cos ) ) ;
656
+ }
657
+
658
+ /// <summary>
659
+ /// Return a new position after rotate around the pivot.
660
+ ///
661
+ /// Source: https://discussions.unity.com/t/rotate-a-vector-around-a-certain-point/81225/2
662
+ /// </summary>
663
+ /// <param name="point"> The outer point. </param>
664
+ /// <param name="pivot"> The pivot point. </param>
665
+ /// <param name="angles"> Angle to rotate. </param>
666
+ public static Vector3 RotatePointAround ( Vector3 point , Vector3 pivot , Vector3 angles )
667
+ {
668
+ Vector3 dir = point - pivot ;
669
+ dir = Quaternion . Euler ( angles ) * dir ;
670
+ point = dir + pivot ;
671
+ return point ;
672
+ }
673
+
674
+ /// <summary>
675
+ /// 計算旋轉的點 (JCS_VECTOR2F)
676
+ /// </summary>
677
+ /// <param name="point"> 我們要計算的"點" </param>
678
+ /// <param name="cos"> Cos 的角度 "Cos(angle)" </param>
679
+ /// <param name="sin"> Sin 的角度 "Sin(angle)" </param>
680
+ /// <param name="origin"> 以這個"點"為中心旋轉 </param>
681
+ public static Vector3 RotatePointX ( Vector3 point , Vector3 origin , float angle )
682
+ {
683
+ return new Vector3 (
684
+ point . x ,
685
+ origin . y + ( ( Mathf . Cos ( angle ) * ( point . y - origin . y ) ) ) - ( Mathf . Sin ( angle ) * ( point . z - origin . z ) ) ,
686
+ origin . z + ( ( Mathf . Sin ( angle ) * ( point . y - origin . y ) ) ) + ( Mathf . Cos ( angle ) * ( point . z - origin . z ) ) ) ;
687
+ }
688
+ public static Vector3 RotatePointY ( Vector3 point , Vector3 origin , float angle )
689
+ {
690
+ return new Vector3 (
691
+ origin . x + ( ( Mathf . Cos ( angle ) * ( point . x - origin . x ) ) ) - ( Mathf . Sin ( angle ) * ( point . z - origin . z ) ) ,
692
+ point . y ,
693
+ origin . z + ( ( Mathf . Sin ( angle ) * ( point . x - origin . x ) ) ) + ( Mathf . Cos ( angle ) * ( point . z - origin . z ) ) ) ;
694
+ }
695
+ public static Vector3 RotatePointZ ( Vector3 point , Vector3 origin , float angle )
696
+ {
697
+ return new Vector3 (
698
+ origin . x + ( ( Mathf . Cos ( angle ) * ( point . x - origin . x ) ) ) - ( Mathf . Sin ( angle ) * ( point . y - origin . y ) ) ,
699
+ origin . y + ( ( Mathf . Sin ( angle ) * ( point . x - origin . x ) ) ) + ( Mathf . Cos ( angle ) * ( point . y - origin . y ) ) ,
700
+ point . z ) ;
701
+ }
702
+
622
703
/// <summary>
623
704
/// Find the point on the circle line base on the degree. (x-axis)
624
705
/// </summary>
@@ -701,75 +782,5 @@ public static Vector3 CirclePosition(Vector3 origin, float deg, float radius, Ve
701
782
702
783
return circlePos ;
703
784
}
704
-
705
- /// <summary>
706
- /// Truncate float number.
707
- ///
708
- /// If 'digits'=2 and 'value'=1.345698F:
709
- /// 1.345698F => 1.34
710
- ///
711
- /// If 'digits'=2 and 'value'=1.300000F:
712
- /// 1.300000F => 1.30
713
- ///
714
- /// SOURCE(jenchieh): https://social.msdn.microsoft.com/Forums/vstudio/en-US/a8092fd2-1080-416c-8ae1-2bad8c013a21/how-to-round-off-a-float-to-2-decimal-places?forum=csharpgeneral
715
- /// </summary>
716
- /// <param name="val"> Value to do truncate. </param>
717
- /// <param name="digits"> Target shown digit. </param>
718
- /// <returns> Result value. </returns>
719
- public static float Truncate ( float val , int digits )
720
- {
721
- double mult = Math . Pow ( 10.0 , digits ) ;
722
- double result = Math . Truncate ( mult * val ) / mult ;
723
- return ( float ) result ;
724
- }
725
-
726
- /// <summary>
727
- /// Find the greatest common factor.
728
- /// 最大公因數.
729
- ///
730
- /// SOURCE: https://stackoverflow.com/questions/18541832/c-sharp-find-the-greatest-common-divisor
731
- /// AUTHOR: Drew Noakes
732
- /// </summary>
733
- /// <param name="a"> number a. </param>
734
- /// <param name="b"> number b. </param>
735
- /// <returns>
736
- /// greatest common factor for 'a' nd 'b'.
737
- /// </returns>
738
- public static int GCD ( int a , int b )
739
- {
740
- while ( a != 0 && b != 0 )
741
- {
742
- if ( a > b )
743
- a %= b ;
744
- else
745
- b %= a ;
746
- }
747
-
748
- return ( a == 0 ) ? b : a ;
749
- }
750
-
751
- /// <summary>
752
- /// Return the positive/negative 1 sign from VAL.
753
- ///
754
- /// If the value is 0 then return 0.
755
- /// </summary>
756
- /// <param name="val"> Value you want to idenfity. </param>
757
- /// <returns>
758
- /// Return 0, if the VAL can't be identify.
759
- /// Return 1, if the VAL is positive value.
760
- /// Return -1, if the VAL is negative value.
761
- /// </returns>
762
- public static float GetSign ( float val )
763
- {
764
- if ( val == 0.0f )
765
- return 0.0f ;
766
- else
767
- {
768
- if ( IsPositive ( val ) )
769
- return 1.0f ;
770
- else
771
- return - 1.0f ;
772
- }
773
- }
774
785
}
775
786
}
0 commit comments