ينفذ هيكل يمثل زاوية.
يتم تخزين الزاوية في الذاكرة في وحدة قياس الزاوية التي تم تعريفها في الأصل، بدقة مضاعفة، مما يسمح بالتحكم الدقيق في التحويلات وتقليل أخطاء التقريب. جميع العمليات مكتوبة بقوة.
يتضمن عمليات الزاوية مثل 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، يجب أن تكون الدقائق القوسية والثواني القوسية قيمًا في الفاصل الزمني [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. يمكن القيام بذلك باستخدام أي من الوسيطتين :
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
الحصول على الزاوية المرجعية (أصغر زاوية مع المحور السيني):
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 ) {
.. .
}
بالنسبة للغات التي لا تدعم عوامل التشغيل، استخدم طريقة المقارنة الثابتة:
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