3D الهندسة: تحويل زوج واحد من النقاط إلى الانحياز بالتوازي مع آخر

StackOverflow https://stackoverflow.com/questions/253546

سؤال

ولدي خط (في الواقع مكعب) الانتقال من (X1، Y1، Z1) إلى (X2، Y2، Z2). أود أن تناوب عليها بحيث يتم محاذاة على طول خط آخر الانتقال من (X3، Y3، Z3) إلى (X4، Y4، Z4). حاليا أنا أستخدم Math::Atan2 جنبا إلى جنب مع Matrix::RotateYawPitchRoll. أي طرق أفضل للقيام بذلك؟

وتحرير: أعتقد أنني قد صيغت هذه الوظيفة بشكل سيء للغاية. ما أنا فعلا تبحث عن مصفوفة دوران من اثنين من المتجهات.

هل كانت مفيدة؟

المحلول

ونعم يمكنك القيام بذلك دون الحاجة إلى التفكير في زوايا على الإطلاق.

ومنذ لديك مكعب، افترض أنك اختيار زاوية واحدة ومن ثم تحديد 3 حواف يشع الخروج من أنها ناقلات F0، F1، F2 (هذه هي متجه اتجاه، نسبة إلى الزاوية كنت قد التقطت). تطبيع تلك واكتبها كما الأعمدة في المصفوفة F

(f0x f1x f2x)
(f0y f1y f2y)
(f0z f1z f2z)

والآن تفعل الشيء نفسه بالنسبة للT0 ناقلات، T1، T2 المكعب تريد تدوير لوالذي يطلق عليه المصفوفة T.

والآن المصفوفة R = T * معكوس (F) هو المصفوفة التي تدور من اتجاه المكعب الأول إلى التوجه للالثانية (لأن معكوس خرائط F على سبيل المثال F0 إلى (1 0 0)، ثم T خرائط (1 0 0) "إلى T0).

إذا كنت تريد أن تعرف لماذا يعمل هذا، والتفكير من حيث تنسيق ناقلات أساس النظام: إذا كنت ترغب في تدوير XY وZ محاور لنظام جديد تنسيق، وأيضا أعمدة مصفوفة التناوب هي مجرد ناقلات تريد (1 0 0)، (0 1 0) "و(0 0 1)" ليتم تعيينها إلى. T * معكوس (F) هو فعال الدورية المكعب الخاص بك من اتجاه الأصلي الخاص به إلى محور الانحياز، ومن ثم إلى الاتجاه المطلوب.

و(عذرا، سبق لناقلات العمود، ويتحول على اليسار، على غرار برنامج OpenGL. ويبدو لي أن نتذكر Direct3D هو ناقلات التوالي وتحول على حق، ولكن يجب أن يكون واضحا كيفية التبديل حولها).

والأمر ينطبق أيضا على حد سواء بشكل جيد لالمصفوفات 4X4 مع عنصر الترجمة أيضا.

نصائح أخرى

وقد ترغب في إضافة كيفية أقحم في الواقع المصفوفات. المصدر والوجهة المصفوفات على ما يرام في إجابتك، ولكن حساب معكوس لا طائل. سوف كواتيرنيون تعطيك أقصر طريق التناوب، حتى تأخذ المصفوفات 3X3 التناوب على كل من المصفوفات، لتحويل كواتيرنيون وlerp تلك. القيام lerp مستقل لترجمة وأعاد. Google للمن أربعة - مصفوفة والتحويلات الظهر وlerp من أربعة.

وتحرير: مصفوفة دوران من الأمام وحتى ناقلات تافهة. العمود المفقود هو المنتج عبر اثنين من ناقلات أخرى. (لا تنسى لتطبيع الأعمدة).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top