Menerapkan struktur yang mewakili sudut.
Sudut disimpan dalam memori dalam unit pengukuran sudut yang awalnya ditentukan, dengan presisi ganda, memungkinkan kontrol yang baik atas konversi dan mengurangi kesalahan pembulatan. Semua operasi diketik dengan kuat.
Termasuk operasi sudut seperti lerp, reduksi, sudut referensi, perbandingan, klasifikasi dan trigonometri.
NetFabric.Angle tersedia sebagai paket NuGet dan paket Unity.
Gunakan metode untuk unit pengukuran yang Anda gunakan:
var right0 = Angle . FromRadian ( Math . PI / 2.0 ) ;
var right1 = Angle . FromDegrees ( 90.0 ) ;
var right3 = Angle . FromGradian ( 100.0 ) ;Saat menggunakan format DMS, menit busur dan detik busur harus bernilai dalam interval [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 arcsecondsAnda dapat menggunakan sudut yang telah ditentukan sebelumnya dalam satuan pengukuran apa pun:
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 Gunakan metode static untuk mengonversi sudut mana pun:
var radians = Angle . ToRadians ( angle ) ;Sudut diketik dengan kuat sehingga ia mengetahui dari satuan ukur mana konversinya.
Catatan: Jika diperlukan, hasilnya harus dikurangi secara eksplisit.
Gunakan properti yang diberi nama berdasarkan satuan pengukuran (untuk lebih jelasnya):
var radians = angleRadians . Radians ;
var degrees = angleDegrees . Degrees ;
var gradians = angleGradians . Gradians ;Sudut dalam derajat dapat didekonstruksi menjadi notasi DMS. Ini dapat dilakukan dengan menggunakan salah satu argumen:
int degrees0 ;
double minute0 ;
angleDegrees . Deconstruct ( out degrees0 , out minutes0 ) ;
int degrees1 ;
int minute1 ;
double seconds1 ;
angleDegrees . Deconstruct ( out degrees1 , out minutes1 , out seconds1 ) ;argumen keluar dengan sintaks C# 7:
angleDegrees . Deconstruct ( out var degrees0 , out var minutes0 ) ;
angleDegrees . Deconstruct ( out var degrees1 , out var minutes1 , out var seconds1 ) ;atau menggunakan dekonstruktor C# 7:
var ( degrees0 , minutes0 ) = angleDegrees ;
var ( degrees1 , minutes1 , seconds1 ) = angleDegrees ;Sudutnya dapat dikurangi menjadi sudut koterminal dalam kisaran [0,0, 360,0[ derajat:
var angle = Angle . Reduce ( AngleDegrees . Right + AngleDegrees . Full ) ; // result is AngleDegrees.RightMendapatkan sudut acuan (sudut terkecil dengan sumbu x):
var angle = Angle . GetReference ( AngleDegrees . Right + AngleDegrees . FromDegrees ( 45.0 ) ) ; // result is an angle with 45 degreesOperator matematika didefinisikan memungkinkan perhitungan dengan sudut.
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 ;Catatan: Jika diperlukan, hasilnya harus dikurangi secara eksplisit.
Metode yang setara juga ditentukan sehingga dapat digunakan untuk bahasa yang tidak mendukung operator.
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 ) ;Operator perbandingan dapat digunakan untuk membandingkan dua sudut:
if ( angle0 > angle1 || angle0 == angle2 ) {
.. .
}Untuk bahasa yang tidak mendukung operator gunakan metode Bandingkan() statis:
if ( Angle . Compare ( angle0 , angle1 ) <= 0 ) { // less or equal to
.. .
}Untuk alasan kinerja, nilai yang dibandingkan tidak dikurangi. Jika diperlukan, mereka harus dikurangi secara eksplisit:
if ( Angle . Reduce ( angle0 ) > Angle . Reduce ( angle1 ) ) {
.. .
}atau gunakan metode statis CompareReduct():
if ( Angle . CompareReduced ( angle0 , angle1 ) > 0 ) {
.. .
}Operasi trigonometri biasa (sin, cos, tan, asin, acos, atan, sinh dan cosh) tersedia sebagai metode statis tetapi hanya untuk sudut dalam radian:
double value0 = Angle . Sin ( angleRadians ) ;
AngleRadians angle0 = Angle . Asin ( value0 ) ;Sudut yang tidak dalam radian harus diubah:
double value1 = Angle . Sin ( Angle . ToRadians ( angleDegrees ) ) ;
AngleDegrees angle1 = Angle . ToDegrees ( Angle . Asin ( value1 ) ) ;Anda bisa mendapatkan kuadran sudut
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.Fourthdan dapat memeriksa apakah suatu sudut lancip, siku-siku, tumpul, lurus atau refleks:
var isAcute = Angle . IsAcute ( AngleDegrees . Right ) ; // false
var isAcute = Angle . IsAcute ( Angle . FromDegrees ( 45.0 ) ) ; // true
var isRight = Angle . IsRight ( AngleDegrees . Right ) ; // trueKlasifikasi mempertimbangkan ekuivalen sudut positif tereduksi sebagai berikut:
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