تنفيذ [link:http://en.wikipedia.org/wiki/Quaternion كواترنيون].
يتم استخدام الكواترنيونات في three.js لتمثيل
[link:https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation الدوران].
التكرار عبر مثيل [name] سيعطي مكوناته (x، y، z، w) بالترتيب المقابل.
لاحظ أن three.js تتوقع أن يتم تسوية Quaternions.
const quaternion = new THREE.Quaternion();
quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 );
const vector = new THREE.Vector3( 1, 0, 0 );
vector.applyQuaternion( quaternion );
[page:Float x] - إحداثية x
[page:Float y] - إحداثية y
[page:Float z] - إحداثية z
[page:Float w] - إحداثية w
علامة للقراءة فقط للتحقق مما إذا كان الكائن المعطى هو من نوع [name].
يعيد الزاوية بين هذا الكواترنيون وكواترنيون [page:Quaternion q] بالراديان.
ينشئ كواترنيون جديدًا بخصائص [page:.x x] و [page:.y y] و [page:.z z] و [page:.w w] متطابقة مع هذا.
يعيد التجانس الدوراني لهذا الكواترنيون. التجانس لـ كواترنيون يمثل نفس الدوران في الاتجاه المعاكس حول محور الدوران.
ينسخ خصائص [page:.x x] و [page:.y y] و [page:.z z] و [page:.w w] من [page:Quaternion q] إلى هذا الكواترنيون.
[page:Quaternion v] - كواترنيون سيتم مقارنة هذا الكواترنيون
إليه.
يقارن خصائص [page:.x x] و [page:.y y] و [page:.z z] و [page:.w w]
من [page:Quaternion v] إلى الخصائص المكافئة لهذا
كواترنيون لتحديد ما إذا كانت تمثل نفس الدوران.
يحسب [link:https://en.wikipedia.org/wiki/Dot_product dot product] من كواترنيونات [page:Quaternion v] وهذا.
[page:Array array] - مصفوفة بتنسيق (x، y، z، w) تستخدم لبناء
الكواترنيون.
[page:Integer offset] - (اختياري) إزاحة في المصفوفة.
يضع خصائص [page:.x x] و [page:.y y] و [page:.z z] و [page:.w w]
لهذا الكواترنيون من مصفوفة.
يضع هذا الكواترنيون على الكواترنيون المتطابق ؛ أي إلى الكواترنيون الذي يمثل "لا دوران".
يعكس هذا الكواترنيون - يحسب [page:.conjugate conjugate]. The يفترض أن الكواترنيون لديه طول وحدة.
يحسب [link:https://en.wikipedia.org/wiki/Euclidean_distance الطول الإقليدي] (طول خط مستقيم) لهذا الكواترنيون ، كما هو معتبر متجه 4 أبعاد.
يحسب المربع [link:https://en.wikipedia.org/wiki/Euclidean_distance الطول الإقليدي] (طول خط مستقيم) لهذا الكواترنيون ، كما هو معتبر متجه 4 أبعاد . هذا يمكن أن يكون مفيدًا إذا كنت تقارن طول اثنين كواترنيون ، حيث أن هذا حساب أكثر كفاءة قليلاً من [page:.length length]().
[link:https://en.wikipedia.org/wiki/Normalized_vector يعدل] هذا كواترنيون - أي حساب الكواترنيون الذي يؤدي نفس دوران كهذا ، ولكن لديه [page:.length length] يساوي `1`.
يضرب هذا الكواترنيون بـ[page:Quaternion q].
يضع هذا الكواترنيون على[page:Quaternion a] x[page:Quaternion b].
تم تكييفه من الطريقة الموضحة
[link:http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.html هنا].
يضرب مسبقًا هذا الكواترنيون بـ[page:Quaternion q].
يضع هذا الكواترنيون على كواترنيون عشوائي معتدل ومعتدل.
[page:Quaternion q] - كواترنيون الهدف.
[page:Float step] - الخطوة الزاوية بالراديان.
يدور هذا الكواترنيون بخطوة زاوية معطاة إلى كواترنيون محدد
*q*. تضمن الطريقة ألا يتجاوز الكواترنيون النهائي *q*.
[page:Quaternion qb] - التدوير الكواترنيون الآخر
[page:Float t] - عامل التداخل في الفترة المغلقة `[0، 1]`.
يتعامل مع التداخل الخطي الكروي بين كواترنيون.
[page:Float t] يمثل مقدار التدوير بين هذا الكواترنيون
(حيث[page:Float t] هو 0) و[page:Quaternion qb] (حيث[page:Float t]
هو 1). يتم تعيين هذا الكواترنيون على النتيجة. اطلع أيضًا على الإصدار الثابت
من `slerp` أدناه.
// تدور شبكة نحو كواترنيون هدف
mesh.quaternion.slerp( endQuaternion، 0.01 );
يؤدي التداخل الخطي الكروي بين كواترنيون المعطى وتخزين النتائج في هذا الكواترنيون.
يضع خصائص [page:.x x] ،[page:.y y] ،[page:.z z] ،[page:.w w] من هذا كواترنيون.
يضع هذا الكواترنيون من التدوير المحدد بـ[page:Vector3 axis] و
[page:Float angle].
تم تكييفه من الطريقة
[link:http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.html هنا].
يفترض أن يكون `Axis` معتدلًا ، `angle` بالراديان.
يضع هذا الكواترنيون من التدوير المحدد بزاوية[page:Euler].
[page:Matrix4 m] - a[page:Matrix4] من الذي العلوي 3x3 من المصفوفة هو
مصفوفة دوران نقية
(أي غير متساوية القياس).
يضع هذا الكواترنيون من مكون التدوير لـ[page:Matrix4 m].
تم تكييفه من الطريقة
[link:http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.html هنا].
يضع هذا الكواترنيون على التدوير المطلوب لتدوير متجه الاتجاه
[page:Vector3 vFrom] إلى متجه الاتجاه[page:Vector3 vTo].
تم تكييفه من الطريقة
[link:http://lolengine.net/blog/2013/09/18/beautiful-maths-quaternion-from-vectors هنا].
يفترض أن يكون[page:Vector3 vFrom] و[page:Vector3 vTo] معتدلًا.
[page:Array array] - مصفوفة اختيارية لتخزين الكواترنيون. إذا لم يتم
محدد ، سيتم إنشاء مصفوفة جديدة.
[page:Integer offset] - (اختياري) إذا تم تحديده ، فسيتم نسخ
في هذه[page:Array].
يعود بالعناصر العددية لهذا الكواترنيون في مصفوفة بتنسيق
[x، y، z، w].
هذه الطرق تحدد نتيجة التسلسل لـ[name]. يعود العناصر العددية لهذا الكواترنيون في مصفوفة بتنسيق [x، y، z، w].
[page:BufferAttribute attribute] - السمة المصدر.
[page:Integer index] - فهرس في السمة.
يضع خصائص [page:.x x] ،[page:.y y] ،[page:.z z] ،[page:.w w] من هذا
كواترنيون من[page:BufferAttribute attribute].
[page:Array dst] - مصفوفة الإخراج.
[page:Integer dstOffset] - إزاحة في مصفوفة الإخراج.
[page:Array src0] - مصفوفة المصدر للكواترنيون البدائي.
[page:Integer srcOffset0] - إزاحة في مصفوفة `src0`.
[page:Array src1] - مصفوفة المصدر للكواترنيون المستهدف.
[page:Integer srcOffset1] - إزاحة في مصفوفة `src1`.
[page:Float t] - عامل التداخل المعتدل (بين 0 و 1).
تفترض هذه التطبيقات SLERP أن بيانات الكواترنيون يتم إدارتها في
مصفوفات مسطحة.
[page:Array dst] - مصفوفة الإخراج.
[page:Integer dstOffset] - إزاحة في مصفوفة الإخراج.
[page:Array src0] - مصفوفة المصدر للكواترنيون البدائي.
[page:Integer srcOffset0] - إزاحة في مصفوفة `src0`.
[page:Array src1] - مصفوفة المصدر للكواترنيون المستهدف.
[page:Integer srcOffset1] - إزاحة في مصفوفة `src1`.
تفترض هذه التطبيقات التعددية أن بيانات الكواترنيون يتم إدارتها
في مصفوفات مسطحة.
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]