각도를 나타내는 구조체를 구현합니다.
각도는 원래 정의된 각도 측정 단위의 메모리에 이중 정밀도로 저장되므로 변환을 미세하게 제어하고 반올림 오류를 줄일 수 있습니다. 모든 작업은 강력한 형식입니다.
Lerp, 축소, 참조 각도, 비교, 분류 및 삼각법과 같은 각도 작업이 포함됩니다.
NetFabric.Angle은 NuGet 패키지 및 Unity 패키지로 제공됩니다.
작업 중인 측정 단위에 대한 방법을 사용하십시오.
var right0 = Angle . FromRadian ( Math . PI / 2.0 ) ;
var right1 = Angle . FromDegrees ( 90.0 ) ;
var right3 = Angle . FromGradian ( 100.0 ) ;
DMS 형식을 사용하는 경우 arcmins 및 arcseconds는 [0.0, 60.0[ 간격의 값이어야 합니다.
var right3 = Angle . FromDegrees ( 90 , 59.9 ) ; // degrees and arcminutes
var right4 = Angle . FromDegrees ( - 90 , 59 , 59.9 ) ; // degrees, arcminutes and arcseconds
모든 측정 단위에서 미리 정의된 각도를 사용할 수 있습니다.
var zero = AngleDegrees . Zero ; // 0 degrees
var right = AngleDegrees . Right ; // 90 degrees
var straight = AngleDegrees . Straight ; // 180 degrees
var full = AngleDegrees . Full ; // 360 degrees
var zero = AngleRadians . Zero ; // 0 radians
var right = AngleRadians . Right ; // PI/2 radians
var straight = AngleRadians . Straight ; // PI radians
var full = AngleRadians . Full ; // 2 * PI radians
각도를 변환하려면 static
메서드를 사용하세요.
var radians = Angle . ToRadians ( angle ) ;
각도는 강력하게 입력되어 있으므로 변환되는 측정 단위를 알 수 있습니다.
참고: 필요한 경우 결과를 명시적으로 줄여야 합니다.
측정 단위 이름을 따서 명명된 속성을 사용합니다(명시적으로).
var radians = angleRadians . Radians ;
var degrees = angleDegrees . Degrees ;
var gradians = angleGradians . Gradians ;
각도(도)는 DMS 표기법으로 분해될 수 있습니다. 이는 out 인수 중 하나를 사용하여 수행할 수 있습니다.
int degrees0 ;
double minute0 ;
angleDegrees . Deconstruct ( out degrees0 , out minutes0 ) ;
int degrees1 ;
int minute1 ;
double seconds1 ;
angleDegrees . Deconstruct ( out degrees1 , out minutes1 , out seconds1 ) ;
C# 7 구문을 사용한 출력 인수:
angleDegrees . Deconstruct ( out var degrees0 , out var minutes0 ) ;
angleDegrees . Deconstruct ( out var degrees1 , out var minutes1 , out var seconds1 ) ;
또는 C# 7 분해자를 사용합니다.
var ( degrees0 , minutes0 ) = angleDegrees ;
var ( degrees1 , minutes1 , seconds1 ) = angleDegrees ;
각도는 [0.0, 360.0[도:
var angle = Angle . Reduce ( AngleDegrees . Right + AngleDegrees . Full ) ; // result is AngleDegrees.Right
참조 각도(x축과의 가장 작은 각도) 얻기:
var angle = Angle . GetReference ( AngleDegrees . Right + AngleDegrees . FromDegrees ( 45.0 ) ) ; // result is an angle with 45 degrees
수학 연산자는 각도 계산을 허용하도록 정의됩니다.
var angle0 = - AngleDegrees . Right ;
var angle1 = AngleDegrees . Straight + Angle . FromDegrees ( 45.0 ) ;
var angle2 = 2.0 * Angle . FromDegrees ( 30.0 ) ;
var angle3 = Angle . FromDegrees ( 30.0 ) / 2.0 ;
참고: 필요한 경우 결과를 명시적으로 줄여야 합니다.
연산자를 지원하지 않는 언어에도 사용할 수 있도록 동등한 메소드도 정의되어 있습니다.
var angle0 = Angle . Negate ( AngleDegrees . Right ) ;
var angle1 = Angle . Add ( AngleDegrees . Straight , Angle . FromDegrees ( 45.0 ) ) ;
var angle2 = Angle . Multiply ( 2.0 , Angle . FromDegrees ( 30.0 ) ) ;
var angle3 = Angle . Divide ( Angle . FromDegrees ( 30.0 ) , 2.0 ) ;
비교 연산자를 사용하여 두 각도를 비교할 수 있습니다.
if ( angle0 > angle1 || angle0 == angle2 ) {
.. .
}
연산자를 지원하지 않는 언어의 경우 정적 Compare() 메서드를 사용하세요.
if ( Angle . Compare ( angle0 , angle1 ) <= 0 ) { // less or equal to
.. .
}
성능상의 이유로 비교된 값은 줄어들지 않습니다. 필요한 경우 명시적으로 줄여야 합니다.
if ( Angle . Reduce ( angle0 ) > Angle . Reduce ( angle1 ) ) {
.. .
}
또는 정적 CompareReduced() 메서드를 사용하세요.
if ( Angle . CompareReduced ( angle0 , angle1 ) > 0 ) {
.. .
}
일반적인 삼각법 연산(sin, cos, tan, asin, acos, atan, sinh 및 cosh)은 정적 방법으로 사용할 수 있지만 라디안 각도에만 사용할 수 있습니다.
double value0 = Angle . Sin ( angleRadians ) ;
AngleRadians angle0 = Angle . Asin ( value0 ) ;
라디안이 아닌 각도는 변환해야 합니다.
double value1 = Angle . Sin ( Angle . ToRadians ( angleDegrees ) ) ;
AngleDegrees angle1 = Angle . ToDegrees ( Angle . Asin ( value1 ) ) ;
각도의 사분면을 얻을 수 있습니다
var quad0 = Angle . GetQuadrant ( Angle . FromDegrees ( 45.0 ) ) ; // Angle.Quadrant.First
var quad1 = Angle . GetQuadrant ( Angle . FromDegrees ( 220.0 ) ) ; // Angle.Quadrant.Third
var quad2 = Angle . GetQuadrant ( Angle . FromDegrees ( - 45.0 ) ) ; // Angle.Quadrant.Fourth
각도가 예각, 직각, 둔각, 직선 또는 반사인지 확인할 수 있습니다.
var isAcute = Angle . IsAcute ( AngleDegrees . Right ) ; // false
var isAcute = Angle . IsAcute ( Angle . FromDegrees ( 45.0 ) ) ; // true
var isRight = Angle . IsRight ( AngleDegrees . Right ) ; // true
분류에서는 각도의 감소된 양의 등가를 다음과 같이 고려합니다.
var isAcute = Angle . IsAcute ( Angle . FromDegrees ( 45.0 ) ) ; // true
var isAcute = Angle . IsAcute ( Angle . FromDegrees ( - 45.0 ) ) ; // true
var isAcute = Angle . IsAcute ( Angle . FromDegrees ( 315.0 ) ) ; // false