ما هي أسهل طريقة لتحقيق المواءمة بين محور Z مع ناقلات الأمراض؟
سؤال
وبالنظر إلى نقطة مثل (0، 0، 0) ومتجه مثل (س، ص، ض). ما هي أسهل طريقة لتحقيق المواءمة بين السلبي Z-محور تركزت في (0، 0، 0) لتشير في اتجاه هذا ناقلات الأمراض؟ ومن الأمثلة باستخدام برنامج OpenGL سيكون موضع ترحيب، ولكن ليس الضروره.
المحلول
وهناك الكثير من الطرق المختلفة لتدوير إطار التنسيق أن نشير في اتجاه معين. أنها سوف نغادر وأشار المحور Z في الاتجاه الذي تريد، ولكن مع وجود اختلافات في كيفية المنحى X- ومحاور ذ.
وفيما يلي يحصل لك أقصر التناوب، والتي قد تكون أو لا تكون ما تريد.
vec3 target_dir = normalise( vector );
float rot_angle = acos( dot_product(target_dir,z_axis) );
if( fabs(rot_angle) > a_very_small_number )
{
vec3 rot_axis = normalise( cross_product(target_dir,z_axis) );
glRotatef( rot_angle, rot_axis.x, rot_axis.y, rot_axis.z );
}
نصائح أخرى
وربما كنت تريد أن يكون لها نظرة على المقالة ديانا غروبر
لإجابة على سؤالي الخاص، وأفضل إجابة جئت مع هذا:
وتقسيم ناقلات تصل إلى "المكونات". المكون x هو النزوح على طول محور س. إذا ننتقل إلى علم المثلثات، لدينا أن كوس (ألفا) = س / vector_magnitude. إذا كنا حساب RHS فإننا يمكن أن تجنيها ألفا، وهو المبلغ الذي سيكون لدينا لتدوير حول محور ذ.
وبعد ذلك نظام الإحداثيات يمكن محاذاة إلى متجه من خلال سلسلة من المكالمات إلى glRotatef ()
وهناك الكثير من الموارد الى هناك عن الدورية الإحداثيات (أو الدورية الأجسام، والذي يصل إلى نفس الشيء). تعلمت الكثير من هذا الموقع ، سواء حول كيفية البرنامج في أبعاد متعددة وخصوصا كيفية التعامل مع ناقلات
هنا لديها قسم "التحولات لنقل متجه إلى ض محور "أن ويبدو أن ما تريد، أو ربما عكس ذلك.