Pixi.js: إعادة صياغة واجهات برمجة التطبيقات التي تستخدم الراديان لاستخدام الدرجات بدلاً من ذلك

تم إنشاؤها على ٣٠ يونيو ٢٠١٧  ·  10تعليقات  ·  مصدر: pixijs/pixi.js

الفوائد المعلنة:

  • أسهل في استخدام واجهة برمجة تطبيقات المستخدم النهائي
  • أسهل في التفكير وقراءة رمز المستخدم
  • من الأسهل الاحتفاظ بقيم الدرجات بدلاً من قيم الراديان
  • أكثر اتساقًا مع المحركات الأخرى المستندة إلى الويب والمحركات ثنائية الأبعاد الأخرى
Stale 🙏 Feature Request

التعليق الأكثر فائدة

ربما مثل Phaser يفعل ذلك؟ الزاوية للدرجات ، والدوران للراديان.

ال 10 كومينتر

بعض السلبيات التي تتبادر إلى الذهن:

  • تعمل وظائف جافا سكريبت الرياضية المضمنة على توحيد معايير الراديان
  • تعمل وظائف glsl المضمنة على توحيد معايير الراديان
  • يعد الراديان تنسيقًا أكثر ملاءمة للتعامل مع بعض أنواع الحسابات (على سبيل المثال ، يمكنني lerp من 0-> Math.pi * 2 والحصول على دوران كامل في اتجاه عقارب الساعة.)

أنا رجل رياضيات ، وأنا أفضل استخدام إما الدرجتين 0..1 إما 0..512 لأسباب تتعلق بالمثابرة وتنسيق التظليل. إذا سألتني نفس السؤال قبل عامين أو أكثر ، يمكنني القول إن الراديان أفضل لأنهم "نقيون" بالمعنى الرياضي.

ومع ذلك ، يعد تخزين 2 x Math.PI في ملفات مشكلة (استمرار) ، و "360" أسرع في الكتابة من 2 * PI ، ولا يمكن تمثيلها بوضوح في شكل ثنائي.

تعمل المحركات التي تعتمد على الفلاش بدرجة كبيرة مع درجات:

https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Sprite.html#getRotation -

http://cocos2d-x.org/docs/programmers-guide/sprites/index.html

http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7def.html

https://www.youtube.com/watch؟v=zAsDbHXlFWI

كما يعمل المحررون مثل Spine ويخزنون الزوايا بالتقدير الدائري.

شيء غريب آخر هو أننا نستخدم SKEW وهو شيء مصمم رسومات وهو مجرد "(shear.y، -shear.x)" بالمعنى الرياضي ، فنحن نسمح لمثل هذا الفظيع ونجبر المستخدم على استخدام راد في نفس الوقت.

تعارضه بين "عارض المستوى المنخفض" و "عارض الرسومات ثنائي الأبعاد مع دعم المرحلة والأدوات الخاصة به" ، وأعتقد أن pixi أقرب إلى الثانية.

englercj لا بد لي من العمل في هذا الرمز أيضًا ، لدي بالفعل شيء من هذا القبيل في مفترقتي: https://github.com/gameofbombs/gobi/tree/master/src/core/transform
https://github.com/gameofbombs/gobi/blob/master/src/core/math/FlatTransform2d.ts

mreinstein يجب أن أطلب إلقاء نظرة على هذا الرمز أيضًا لأنك تعرف شيئًا عن تحويلات pixi ؛)

اقتراحات من bigtimebuddy & @ GoodBoyDigital ، اجعل واجهة برمجة التطبيقات

// useDegrees
CONVERSION = Math.PI / 180;

// useRadiens
CONVERSION = 1;

set rotation(rot)
{
    this._rotation = rot * CONVERSION;
}

ربما مثل Phaser يفعل ذلك؟ الزاوية للدرجات ، والدوران للراديان.

تضمين التغريدة هذا هو أبسط طريقة هناك. يمكن للمحركات التي تعتمد على pixi إصلاح ثابت "التحويل".

englercj Processing تفعل هذا ، وأعتقد أنه قرار تصميم سيئ حقًا. إنه يضر بالنمطية. إذا كان لديك جزء من الكود يقوم بشيء بطريقة ما وحاول استخدام جزء آخر من التعليمات البرمجية (ربما في مكتبة) يفترض الطريقة الأخرى ، فلن يعمل. إذا تأكدت من ضبط وضع الوحدة قبل كل مكالمة لوظيفة متعلقة بالزاوية ، فقد يضمن أن الكود الخاص بك يعمل ولكنه يكسر رمز المكتبة. وإذا كان هناك جزء من كود مكتبة يستخدم الزوايا ، فهل يجب أن يضبط وضع الزاوية؟ قد يضمن ذلك أن الكود الخاص به يعمل على النحو المنشود ولكنه يكسر رمز المستخدم. إنها تقريبًا مثل معضلة السجين لتصميم واجهة برمجة التطبيقات.

OSUblake هذا يبدو أكثر منطقية. بينما لا تشير زاوية الأسماء والدوران صراحة إلى وحدة أو تحظرها ، فهناك بالتأكيد ارتباطات تجعل هذا أكثر منطقية من مثل تخمين 50/50.

أعتقد أن angleDeg و angleRad سيكون أفضل على الرغم من ذلك. لماذا لا تجعلها صريحة؟

الزاوية للدرجات ، والدوران للراديان.

قد تكون هذه هي الطريقة التي يقوم بها فيزر ولكن هذا غير متفق عليه عالميًا. الدوران هو الإجراء ، والزاوية هي مقدار ذلك الإجراء الذي حدث. يشار إليها أحيانًا باسم "زاوية الدوران". لذلك ، من الناحية الفنية ، يمكن زيادة التحميل على الزاوية أو الدوران للإشارة إلى نفس الشيء ، ويمكن التعبير عنها بأي وحدة (درجات أو راديان).

أي عمليات حسابية تتضمن التناوب أسهل بكثير مع الراديان. ليس من الصعب حقًا فهم ذلك ؛ Math.PI في منتصف الدائرة ؛ Math.PI * 2 هو دوران كامل.

الدرجات الزمنية الوحيدة المناسبة هي عندما تعرض واجهة مستخدم مرئية لأشخاص تتضمن التناوب ، ويكون جمهورك عبارة عن مجموعة لا تفهم الهندسة الأساسية (على سبيل المثال ، معظم الأشخاص).

أدرك أن هذا رأي ولكن اذهب مع الراديان. تعمل جميع واجهات برمجة التطبيقات الخاصة بالرياضيات في جافا سكريبت على الراديان ، وليس الدرجات ، كما تفعل معظم المكتبات الهندسية التي لا تعتمد على الألعاب.

إذا كان علينا حقًا دعم الجميع في كل شيء ، فأنا أتفق مع @ 1j01 لتوضيح ذلك. ربما .degrees أو .radians ؟

تم وضع علامة على هذه المشكلة تلقائيًا على أنها قديمة نظرًا لعدم وجود نشاط حديث لها. سيتم إغلاقه إذا لم يحدث أي نشاط آخر. شكرا لمساهماتكم.

تم قفل سلسلة الرسائل هذه تلقائيًا نظرًا لعدم وجود أي نشاط حديث بعد إغلاقه. الرجاء فتح قضية جديدة للأخطاء ذات الصلة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

SebastienFPRousseau picture SebastienFPRousseau  ·  3تعليقات

zcr1 picture zcr1  ·  3تعليقات

lucap86 picture lucap86  ·  3تعليقات

Darker picture Darker  ·  3تعليقات

softshape picture softshape  ·  3تعليقات