يستخدم مبرمجو الرسومات
quaternions لتسجيل المنعطفات ثلاثية الأبعاد. ومع ذلك ،
يصعب فهم الكواترون لأنها تدرس بشكل سطحي . نأخذ فقط جداول الضرب الغريبة والتعريفات المشفرة الأخرى عن الإيمان ، ونستخدمها كـ "مربعات سوداء" تقوم بتدوير المتجهات حسب حاجتنا. لماذا
mathbfi2= mathbfj2= mathbfk2=−1 و
mathbfi mathbfj= mathbfk ؟؟؟ لماذا نأخذ ناقلات ونحولها إلى ناقل "خيالي" لتحويله ، على سبيل المثال
mathbfq(x mathbfi+y mathbfj+z mathbfk) mathbfq∗ ؟؟؟ ولكن من يهتم إذا كان كل شيء يعمل ، أليس كذلك؟
هناك طريقة لوصف الدوران يسمى
الدوار ، والذي يشير إلى مجال الأعداد المركبة (في 2D) و quaternions (في 3D) ، وحتى يعمم على أي عدد من الأبعاد.
يمكننا إنشاء دوارات
بالكامل تقريبًا من نقطة الصفر ، بدلاً من تحديد quaternions من لا شيء ومحاولة شرح كيفية عملها
بأثر رجعي . يستغرق الأمر المزيد من الوقت ، ولكن يبدو لي أنه يستحق ذلك ، لأن فهمه أسهل بكثير!
بالإضافة إلى ذلك ، من أجل تصور وفهم الدوارات ثلاثية الأبعاد ، ليس من الضروري استخدام البعد المكاني الرابع.
سيكون من الرائع إذا بدؤوا في استبدال استخدام ودراسة الرباعيات ، واستبدالهم بالدوار. استبدالها بسيط للغاية ، لكن
الرمز سيظل كما هو تقريبًا . كل شيء يمكن القيام به مع quaternions ، على سبيل المثال ، إقحام وإزالة أقفال المحور (قفل Gimbal) ، يمكن القيام به مع الدوارات.
لكننا نبدأ في فهم المزيد.(في المقال الأصلي ، جميع الرسوم البيانية تفاعلية ، ويتبع المقالة مقطع فيديو. بالنقر على أزرار التشغيل ، يمكنك بدء القسم المقابل من الفيديو. يمكنك أيضًا النقر فوق زر الانتقال أسفل الفيديو للانتقال إلى القسم المقابل من المقالة. يمكنك توسيع النافذة بحيث يكون هناك مساحة أكبر للفيديو ، أو قم بتعيين حجم ثابت لها.)
1. تحويل الطائرات
1.1. يتم تنفيذ المنعطفات على طائرات ثنائية الأبعاد.
في الفضاء ثلاثي الأبعاد ، عادة ما ندرك أن المنعطفات تحدث حول المحاور ، مثل عجلة تدور على محور ، ولكن بدلاً من ذلك سيكون من الأصح تمثيل الطائرة التي تقع عليها العجلة. هذا المستوى عمودي على المحور.
هذه المرأة العجوز تدور عجلة في الطائرة mathbfxz عمودي على المحور mathbfy .يحدث هذا لأنه إذا قسمنا المتجه إلى قسمين ، يقع أحدهما على متن الطائرة (
mathbfv $المواز ) ، والآخر خارج (
mathbfv circ ) ، ثم يدور الجزء الداخلي ، ويبقى الجزء الخارجي دون تغيير.
الدوران في الطائرة yx [ في المقال الأصلي يمكن تحريك هذه الرسوم المتحركة والكاميرا ]في الفضاء ثنائي الأبعاد ، هناك مستوى واحد فقط يمكن فيه الدوران (
لا يوجد جزء خارجي ). لذلك ، بافتراض أن التدوير يحدث حول المحور الثالث (عمودي على المستوى الثنائي الأبعاد) ، فهذا غير صحيح تمامًا ، لأنه لإكمال التدوير لا ينبغي لنا إضافة بُعد آخر.
إذا أخبرنا "مالك الأرض المسطح" ثنائي الأبعاد (الذي يعيش داخل المستوى الثنائي الأبعاد ولم يخرج أبدًا من الفضاء ثنائي الأبعاد) عن المحور المتعامد للدوران ، فسوف يسأل: "في أي اتجاه يشير هذا المحور؟ لا يمكنني تخيلها! "
ملاحظةوفي الأبعاد الأعلى (4D وأعلى) ، من المستحيل تحديد متجه واحد عادي للمستوى ثنائي الأبعاد (على سبيل المثال ، في 4D ، يكون للمستوى ثنائي الأبعاد اتجاهين للمعيار الطبيعي ، وفي 5D هناك ثلاثة اتجاهات للمعيار ، وفي nD هم n−2 )
1.2. الاتجاه الدقيق للمنعطفات
بالإضافة إلى ذلك ، عندما نفكر في الدوران حول محور ، لا يتم تحديد اتجاه الدوران ، وبالتالي يجب تحديده بواسطة قاعدة (ما يسمى "القاعدة اليمنى").
ومع ذلك ، إذا افترضنا أن المنعطفات تحدث داخل الطائرات ، فإن الاتجاه يصبح واضحًا: الدوران في الطائرة
mathbfxy يعني دوران يقوم بتحريك متجه (وحدة)
mathbfx إلى متجه (الوحدة)
mathbfy داخل الطائرة يشكلون معا. الدوران في الطائرة
mathbfyx هو دوران في الاتجاه المعاكس: إنه يحرك المتجه
mathbfy إلى المتجه
mathbfx .
ملاحظةأتذكر أنه عندما علمت لأول مرة عن ثلاث مصفوفات لدورات ثلاثية الأبعاد على طول الطائرات المتعامدة ، فكرت في البداية: ما هو مصفوفة الجحيم mathbfRy لديه علامة عكسية؟ هذا يرجع إلى قاعدة اليد اليمنى ، والتي بموجبها يجب علينا تحديد الدوران حول المحور mathbfy بحيث يتم تشغيله من mathbfz ل mathbfx ليس من mathbfx ل mathbfz للحفاظ على اتجاه دوران "اليد اليمنى" ثابت. عندما نبدأ الحديث مباشرة عن الطائرة نفسها ، تصبح هذه القاعدة غير ضرورية.
R_X (\ theta) = \ start {bmatrix} 1 & 0 & 0 \\ 0 & cos (\ theta) & -sin (\ theta) \\ 0 & sin (\ theta) & cos (\ theta) \ end {bmatrix} \: \: \: R_Y (\ theta) = \ start {bmatrix} cos (\ theta) & 0 & \ bbox [5px، الحد السفلي: 2px صلب أحمر] {\ \} sin (\ theta) \\ 0 & 1 & 0 \\ \ bbox [5 بكسل ، الحد السفلي: 2 بكسل بلون أحمر صلب] {-} sin (\ theta) & 0 & cos (\ theta) \ end {bmatrix} \: \: \: R_Z (\ theta) = \ start {bmatrix} cos (\ theta) & -sin (\ theta) & 0 \\ sin (\ theta) & cos (\ theta) & 0 \\ 0 & 0 & 1 \ end {bmatrix }
2. المفاعلات
2.1. العمل الخارجي
لحساب محور الدوران عند تدوير متجه واحد
mathbfa إلى ناقل آخر
mathbfb نأخذ المنتج المتجه من متجهين للحصول على متجه متعامد مع كلاهما. ولكن لماذا نحتاج إلى "مغادرة" الطائرة إذا كان الدوران في الأساس عملية ثنائية الأبعاد؟
بدلاً من ذلك ، نأخذ ما يسمى
منتجًا خارجيًا (يُعرف أيضًا باسم منتج متجه ثنائي الأبعاد) ، متجهين ، لإنشاء عنصر جديد يسمى "bivector" (أو متجه 2)
mathbfB تمثل المستوى الذي يشكله متجهان معًا. إذا قام منتج متجه بإنشاء
متجه عادي للمستوى ، فإن المنتج الخارجي ينشئ
المستوى نفسه . حساب العادي للطائرة غير ذي صلة.
mathbfB= mathbfa wedge mathbfb
mathbfB يمكن تمثيله كمتوازي الأضلاع مبني من المتجهات
mathbfa و
mathbfb في المستوى الذي يشكلونه معًا.
في البداية ، قد تبدو فكرة المنشط غريبة ، لكن سرعان ما سنرى أنها تقريبًا
أساسية مثل المتجهات نفسها . إذا كان من الممكن مقارنة المتجه بخط مستقيم ، فإن المركب المشابه يشبه المستوى ... خصائص المنتج الخارجي تلتقط الخصائص المهمة للطائرات.
2.2. أساس المفاعلات
تحتوي المحركات النشطة ، مثل المتجهات ، على مكونات. ولكن يتم تحديدها على أساس
الطائرات ، وليس
الخطوط المستقيمة ، مثل المتجهات.
ثلاث طائرات قاعدية متعامدة هي
mathbfx wedge mathbfy ،
mathbfx wedge mathbfz و
mathbfy wedge mathbfz كما نرى من الشكل.
لكن أولاً ، دعنا ننظر إلى حالة أبسط ثنائية الأبعاد ...
2.3. مفاعلات ثنائية الأبعاد
في 2D ، هناك طائرة واحدة فقط ، وهي
mathbfxy . بمعنى أن المفاعل الثنائي الأبعاد له مكون واحد فقط. لمفاعل يتكون من ناقلات
mathbfa و
mathbfb هو الرقم
Bxy يساوي مساحة (مع علامة) من متوازي الأضلاع الذي شكله متجهان.
mathbfB= mathbfa wedge mathbfb=Bxy( mathbfx wedge mathbfy)
في المقالة الأصلية مع bivector ثنائي الأبعاد ، يمكنك تجربة الرسم البياني التفاعلي من خلال تغيير المتجهات (المفردة) التي يتكون منها:
يمكنك أن ترى أنه عندما تتغير الزاوية بين المتجهات ، تتغير منطقة متوازي الأضلاع (وفقًا لجيب الزاوية).
إذا كانت المتجهات متشابهة أو متوازية ، فلن تشكل مستوى عاديًا وستكون النتيجة صفرًا. تحدد هذه الخاصية البسيطة ماهية bivector:
mathbfa wedge mathbfa=0
بالنظر إلى مجموع متجهين ، يمكنك أن ترى أن الخاصية تتبع:
\ start {eqnarray} (\ mathbf {a} + \ mathbf {b}) \ wedge (\ mathbf {a} + \ mathbf {b}) & = & 0 \\ \ mathbf {a} \ wedge \ mathbf { a} + \ mathbf {b} \ wedge \ mathbf {a} + \ mathbf {a} \ wedge \ mathbf {b} + \ mathbf {b} \ wedge \ mathbf {b} & = & 0 \\ \ mathbf { b} \ wedge \ mathbf {a} + \ mathbf {a} \ wedge \ mathbf {b} & = & 0 \ end {eqnarray}
لذلك:
mathbfa wedge mathbfb=− mathbfb wedge mathbfa
تمامًا مثل
اتجاه الدوران ، فإن ترتيب الحجج في العمل الخارجي مهم. تؤدي إعادة ترتيب الحجج إلى تغيير علامة النتيجة (وهذا ما يسمى "عدم التناظر").
على الرسم البياني ، يشار إلى العلامة بلون يتغير من الأزرق إلى الأخضر. تتغير العلامة عندما يحين دور
mathbfa في
mathbfb يتحرك من اتجاه عقارب الساعة إلى عكس اتجاه عقارب الساعة (أي إذا تطابق مع الاتجاه (من
mathbfx ل
mathbfy ) أو الاتجاه (من
mathbfy ل
mathbfx )).
يمكنك أن ترى أن خصائص المنتج الخارجي مرتبة بحيث تنقل خصائص الطائرات والمنعطفات.
2.4. نواقل ثنائية الأبعاد من نواقل غير الوحدة
من الواضح أن المتجهات لا يجب أن تكون بطول الوحدة ، وقد تمت إزالة هذا القيد على هذا الرسم البياني:
تتناسب مساحة متوازي الأضلاع مع علامة مع أطوال المتجهين:
Bxy=sin( alpha) |a | |b | أين
alpha هي الزاوية بين
mathbfa و
mathbfb . هذا ، على سبيل المثال ، عند مضاعفة طول متجه واحد ، تتضاعف المساحة.
يمكننا الحصول على القيمة الحقيقية عن طريق استبدال المتجهات كمكونات:
\ start {eqnarray} \ mathbf {a} \ wedge \ mathbf {b} & = & (a_x \ mathbf {x} + a_y \ mathbf {y}) \ wedge (b_x \ mathbf {x} + b_y \ mathbf { y}) \\ & = & a_x b_x (\ mathbf {x} \ wedge \ mathbf {x}) + a_x b_y (\ mathbf {x} \ wedge \ mathbf {y}) + a_y b_x (\ mathbf {y} \ wedge \ mathbf {x}) + a_y b_y (\ mathbf {y} \ wedge \ mathbf {y}) \\ & = & a_x b_y (\ mathbf {x} \ wedge \ mathbf {y}) + a_y b_x ( \ mathbf {y} \ wedge \ mathbf {x}) \\ & = & a_x b_y (\ mathbf {x} \ wedge \ mathbf {y}) - a_y b_x (\ mathbf {x} \ wedge \ mathbf {y} ) \\ & = & (a_x b_y - a_y b_x) (\ mathbf {x} \ wedge \ mathbf {y}) \ end {eqnarray}
Bxy=axby−bxay
2.5. bivectors 3D
نفس إحداثيات النواقل
mathbfv يمكن اعتبار
إسقاطات المتجه على ثلاثة محاور أساس متعامدة (
mathbfx ،
mathbfy ،
mathbfz ) ، إحداثيات المفاعل
mathbfB يمكن اعتباره
إسقاطات أصغر من طائرة على ثلاث طائرات قاعدية متعامدة.
إسقاطات المتجه هي
أطوال هذا المتجه على طول كل متجه أساسي ، وإسقاطات المفاعل هي
مناطق الطائرة على كل مستوى أساس.
للمتجه:
mathbfv= bbox[5بكسل،الحدالسفلي:2بكسلأحمرصلب]vx mathbfx+ bbox[5بكسل،الحدالسفلي:2بكسلأخضرصلب]vy mathbfy+ bbox[5بكسل،الحدالسفلي:2بكسلأزرقصلب]vz mathbfz
بالنسبة للمفاعل العضوي:
mathbfB= bbox[5px،الحدالسفلي:2بكسلصلبمرجاني]Bxy( mathbfx wedge mathbfy)+ bbox[5px،الحدالسفلي:2بكسلذهبمصمت]Bxz( mathbfx wedge mathbfz)+ bbox[5بكسل،حدسفلي:2بكسلصلبDarkViolet]Byz( mathbfy wedge mathbfz)
أين
Bxy ،
Bxz ،
Byz هي مجرد أرقام مثل
vx ،
vy ،
vz (يتم تسطيرها بواسطة الألوان المقابلة للألوان على الرسم البياني).
مكونات bivector ثلاثي الأبعاد ليست سوى ثلاثة إسقاطات ثنائية الأبعاد ل bivector على مستوى ثنائي الأبعاد الأساسي.
باستخدام نفس الطريقة كما كان من قبل ، نجد أن القيم الحقيقية للمكونات تشبه إلى حد كبير مكون XY من الحالة ثنائية الأبعاد ، ولكنها تنطبق على جميع المستويات الثلاثة:
Bxy=axby−bxay
Bxz=axbz−bxaz
Byz=aybz−byaz
يمكنك تجربة Bivector ثلاثي الأبعاد على مخطط تفاعلي في المقالة الأصلية:
ملاحظةمعيار bivector | mathbfB |= | mathbfa wedge mathbfb | يتم تحديده بشكل مشابه لقاعدة المتجه (الجذر التربيعي لمجموع مربعات المكونات). هذا يساوي مساحة متوازي الأضلاع المتكون mathbfa و mathbfb ، أي | mathbfa wedge mathbfb |= midsin( alpha) mid | mathbfa | | mathbfb | أين alpha - الزاوية بين mathbfa و mathbfb .
إذا قسمنا العامل المفاعل حسب قاعدته ، فإننا نقوم بتقليل أطوال المتجهات والقيمة (المطلقة) لزاوية الزاوية ، أي أننا سنحصل على المفاعل
hat mathbfB ، والتي سيتم بناؤها كما لو كان المتجهان متعامدين في البداية وكان طولهما وحدة. هذا تمثيل نظيف للغاية لمستوى يحتوي على كلا المتجهين. لذا:
mathbfB=| mathbfa | ||mathbfb | midsin( alpha) mid hat mathbfB
هل هناك شيء يذكرك بعمل خارجي؟ في الأبعاد الثلاثية ، يكون تعريف العمل الخارجي مشابهًا جدًا لتعريف العمل المتجه. في الواقع ، فإن المتجه في 3D الذي يتم الحصول عليه من منتج متجه (على سبيل المثال ، ناقل عادي) سيكون له ثلاثة مكونات تساوي مكونات المفاعل (ستكون الأرقام هي نفسها ، ولكن الأساس مختلف).
$$ display $$ \ start {eqnarray} \ mathbf {a} \ wedge \ mathbf {b} & = & & (a_x b_y - b_x a_y) (\ mathbf {x} \ wedge \ mathbf {y}) \\ & & + & (a_x b_z - b_x a_z) (\ mathbf {x} \ wedge \ mathbf {z}) \\ & & + & (a_y b_z - b_y a_z) (\ mathbf {y} \ wedge \ mathbf {z} ) \\ \\ \ mathbf {a} \ times \ mathbf {b} & = & & (a_x b_y - b_x a_y) \ \ mathbf {z} \\ & & - & (a_x b_z - b_x a_z) \ \ mathbf {y} \\ & & + & (a_y b_z - b_y a_z) \ \ mathbf {x} \ end {eqnarray} $$ display $$
تعريف bivector له معنى هندسي ، ولا يظهر من العدم. أتذكر أنه عندما درست منتجات المتجهات ، فكرت: "ما الذي يعيد الجحيم متجهًا طوله يساوي مساحة متوازي الأضلاع الذي شكله هذان المتجهان؟ يبدو عشوائيًا جدًا. ولماذا يمكننا تحويل
منطقة متوازي الأضلاع إلى
طول المتجه؟ "
2.6. دلالات المتجهات و المحركات
في 3D ، يحتوي bivector على ثلاثة إحداثيات ، واحدة لكل مستوى:
mathbfxy ،
mathbfxz و
mathbfyz ) تحتوي الموجهات أيضًا على ثلاثة إحداثيات ، واحدة لكل محور (
mathbfx ،
mathbfy و
mathbfz ) كل مستوى عمودي على محور واحد. تنشأ هذه المصادفة فقط في ثلاثة أبعاد
(*) ولهذا السبب
نخلط باستمرار بين biveators و ناقلات .
(*)في 2D ، لا يوجد سوى bivector الأساسية واحدة ( mathbfxy ) ، وفي الأبعاد الثلاثية ، هناك 3 مفاعلات حيوية ( mathbfxy ، mathbfxz ، mathbfyz ) ، في 4D هناك 6 مفعلات أساس ( mathbfxy ، mathbfxz ، mathbfxw ، mathbfyz ، mathbfyw ، mathbfzw ) وهكذا ...
في البرمجة ، كلاهما لهما نفس تخطيط الذاكرة ، ولكن عمليات مختلفة. يشبه استخدام متجه ثلاثي الأبعاد بدلاً من مفاعل ثلاثي الأبعاد "تحويل نوع" مفاعل.
إليك مثال: يمكنك أن ترى أن المتجهات العادية يتم تحويلها بشكل مختلف عن المتجهات العادية باستخدام مصفوفة "النقل العكسي"
( mathbfMT)−1 ، بدلاً من المصفوفة نفسها. هذا لأنهم في الواقع ليسوا نواقل ، بل نواقل يتم تحويلها إلى نواقل عن طريق "تحويل النوع". في الفيزياء ، هناك اختراق يدعى "الناقل المحوري" ، والذي تم إدخاله من أجل التمييز بين المتجهات التي تم الحصول عليها بواسطة المنتج المتجه من المتجهات العادية. المفاعل هو "نوع" حقيقي من شيء ما ويجب إدراكه ومعالجته وفقًا لذلك.
Trivectors
يمكننا الاستمرار في أخذ منتج خارجي ليس فقط للحصول على مناطق ثنائية الأبعاد موجهة ، ولكن أيضًا لأحجام ثلاثية الأبعاد موجهة. Trivector T يمكن الحصول عليه عن طريق عمل المنتج الخارجي مرتين:
mathbfT= mathbfa wedge mathbfb wedge mathbfc
في الفضاء ثلاثي الأبعاد ، ينتهي كل شيء هناك. كما هو الحال في 2D ، حيث يوجد مستوى واحد فقط يملأ المساحة ثنائية الأبعاد بالكامل ، في 3D ، هناك حجم واحد فقط يملأ المساحة ثلاثية الأبعاد بأكملها.
[ولكن في nD ، يمكننا الاستمرار في إنشاء ناقلات خارجية أكبر حتى نصل إلى البعد التاسع. على سبيل المثال ، في 4D ، لدينا أربعة مراوغات أساس (3 ناقلات) ( mathbfxyz ، mathbfxyw ، mathbfxwz ، mathbfyzw ) وواحد أساسي 4 ناقلات mathbfxyzw ]
في 3D ، يحتوي trivector على مكون أساسي واحد فقط ( Txyz ) يساوي حجم المتوازيات المتكونة من ثلاثة نواقل. المنتج الخارجي الثلاثي هو نسخة محسنة من المنتج الثلاثي العددي ( ( mathbfa times mathbfb) cdot mathbfc ) ، لأنها تتضمن نوعًا واحدًا فقط من العمليات ، فإنها تُرجع النوع الصحيح (الحجم بدلاً من العددية) وتعمل في أي عدد من الأبعاد.
mathbfT=Txyz mathbfx wedge mathbfy wedge mathbfz
3. المنتج الهندسي
3.1. تكاثر المتجهات على بعضها البعض
منتج هندسي
mathbfab (يشار إليها بدون رمز) هي عملية أخرى يمكن إجراؤها باستخدام المتجهات. يتم تعريف المنتج الهندسي بحيث تكون المتجهات كميات معكوسة (على سبيل المثال
mathbfa mathbfa−1=1 ، حيث 1 هو الرقم 1 فقط!) وله خصائص ملائمة ، على سبيل المثال ، الجمعية (
mathbfa( mathbfb mathbfc)=( mathbfa mathbfb) mathbfc ) الغرض من هذا هو أن تكون قادرًا على مضاعفة المتجهات بحيث يتوافق الضرب (كما هو الحال مع المصفوفات) مع العمليات الهندسية.
ملاحظةوجود قيم عكسية مفيد لأنه مهما كان الكائن mathbfa mathbfa−1 ، لن تؤثر على المتجهات ، أي أنها ستتصرف بنفس الطريقة عند ضرب الرقم في 1.
لتعريف المنتج ، نلاحظ أولاً أنه من الممكن تقسيم المنتج (أو أي وظيفة تأخذ وسيطتين) إلى مجموع الجزء الذي لا يتغير إذا قمنا بتبديل الحجج والجزء الذي يتغير على النحو التالي:
\ start {eqnarray} \ mathbf {a} \ mathbf {b} & = & \ frac {1} {2} (\ mathbf {a} \ mathbf {b} + \ mathbf {a} \ mathbf {b} + \ mathbf {b} \ mathbf {a} - \ mathbf {b} \ mathbf {a}) \\ & = & \ frac {1} {2} (\ mathbf {a} \ mathbf {b} + \ mathbf { b} \ mathbf {a}) + \ frac {1} {2} (\ mathbf {a} \ mathbf {b} - \ mathbf {b} \ mathbf {a}) \ end {eqnarray}
لم يعد المصطلح الأول يعتمد على ترتيب الحجج
mathbfa و
mathbfb (يطلق عليه الجزء "المتماثل") ، والتغييرات في المصطلح الثاني تشير عند تغيير أماكن الحجج (تسمى الجزء "غير المتماثل").
الناتج العددي لمتجهين (يسمى أيضًا المنتج الداخلي) متماثل وهو مقياس المسافة (
mathbfa cdot mathbfa= | mathbfa |2 ) ، لذلك ، من وجهة نظر هندسية ، يبدو من المفيد أن نجعلها مساوية للجزء المتماثل:
frac12( mathbfa mathbfb+ mathbfb mathbfa)= mathbfa cdot mathbfb
وبالمثل ، فإن المنتج الخارجي لمتجهين هو مضاد غير متماثل ، لذلك سيكون من المفيد معادلته بالجزء غير المتماثل:
frac12( mathbfa mathbfb− mathbfb mathbfa)= mathbfa wedge mathbfb
بالإضافة إلى ذلك ، يحتوي المنتج القياسي على
جيب تمام الزاوية بين متجهين (
mathbfa cdot mathbfb= | mathbfa | | mathbfb |cos( alpha) ) ، بينما يحتوي المنتج الخارجي على
جيب الزاوية. معًا ، يصفان تمامًا الزاوية بين المتجهات ، وكذلك المستوى الذي تشكلهما.
ملاحظةإن اكتمال الوصف هو الذي يجعل العمل قابلاً للعكس ، لأنه يمكننا الانتقال من ناقل إلى آخر بمساعدة المعلومات الواردة في عملهم. إذا أعطيتك mathbfa و mathbfa mathbfb ثم يمكنك الحصول عليها mathbfb . هذا مستحيل القيام به ، مع معرفة فقط جيب التمام أو فقط جيب / الطائرة.
أي أن المنتج الهندسي يساوي:
mathbfa mathbfb= mathbfa cdot mathbfb+ mathbfa wedge mathbfb
هذا أمر غريب لأن ضرب متجهين يعطي مجموع شيئين مختلفين: العددية والنشاط. ومع ذلك ، هذا يشبه كيف أن العدد المركب هو مجموع العددية والرقم "التخيلي" ، لذا يمكنك التعود عليه بالفعل. هنا ، جزء bivector يتوافق مع الجزء "الخيالي" من العدد المركب.
فقط هذه ليست قيمة "خيالية" ، إنها مجرد مفاعل نشط يمكننا عرضه بيانياً!في الواقع ، بضرب متجهين ، نحسب خصائصهما المفيدة ("طول إسقاطاتهما على بعضهما البعض" / "جيب الزاوية")
mathbfa cdot mathbfb ) و "المستوى الذي يشكلانهما معًا" / "جيب الزاوية" (
mathbfa wedge mathbfb )) ، والتي نربطها معًا بعلامة الجمع. يعطي المنتج الهندسي أيضًا عمليات "مجموعات الخصائص" التي يمكن تطبيقها عليها ، وهذه العمليات لها تفسيرات هندسية (على سبيل المثال: الدوران وانعكاس المتجهات). هذا سنرى قريبا.
يمكنك التعبير عن المنتج الهندسي من حيث الجيب وجيب التمام:
mathbfa mathbfb= | mathbfa | | mathbfb |(cos( alpha)+sin( alpha) mathbfB) أين
mathbfB هو عبارة عن عامل نشط لكلا المتجهين على المستوى ، ويتألف من وحدتين متعامدين.
3.2. جدول الضرب
يسمح لنا جدول الضرب بجعل المنتج أكثر تحديدًا: دعنا نرى ما يحدث إذا حصلنا على منتجات ناقلات الأساس (
mathbfx ،
mathbfy ،
mathbfz )
لأي ناقل أساس ، على سبيل المثال المحور
mathbfx ستكون النتيجة متساوية
1 :
mathbfx mathbfx= mathbfx cdot mathbfx+ mathbfx wedge mathbfx=1
لأي زوج من ناقلات الأساس ، على سبيل المثال ، المحاور
mathbfx و
mathbfy ، ستكون النتيجة bivector ، والتي تشكل معا:
mathbfx mathbfy= mathbfx cdot mathbfy+ mathbfx wedge mathbfy= mathbfx wedge mathbfy
(أي يمكننا تسمية
mathbfx wedge mathbfy فقط
mathbfx mathbfy ، لأن هذا هو نفس الشيء!)
هذا يعطينا الجدول التالي:
mathbfa mathbfb | mathbfb |
mathbfx | mathbfy | mathbfz |
mathbfa | mathbfx | 1 | mathbfx mathbfy | mathbfx mathbfz |
mathbfy | − mathbfx mathbfy | 1 | mathbfy mathbfz |
mathbfz | − mathbfx mathbfz | − mathbfy mathbfz | 1 |
في الواقع ، هذا الجدول تافه ، مقارنة ، على سبيل المثال ، مع جدول quaternions.
ملاحظةعلى سبيل المثال ، هنا هو ضرب متجهين (5،3،0) و (2،0،1) :
\ start {eqnarray} (5 \ mathbf {x} + 3 \ mathbf {y}) (2 \ mathbf {x} + 1 \ mathbf {z}) & = & 5 \ 2 \ \ mathbf {x} \ mathbf {x} + 5 \ 1 \ \ mathbf {x} \ mathbf {z} + 3 \ 2 \ \ mathbf {y} \ mathbf {x} + 3 \ 1 \ \ mathbf {y} \ mathbf {z} \\ & = & 10 + 5 \ \ mathbf {x} \ mathbf {z} - 6 \ \ mathbf {x} \ mathbf {y} + 3 \ \ mathbf {y} \ mathbf {z} \ end {eqnarray}
3.3. صيغة انعكاس (المظهر التقليدي)
التفكير في المتجه [في المقالة الأصلية ، يمكن نقل كل متجه]إذا كان لدينا ناقل وحدة
mathbfa والمتجه
mathbfv يمكننا التفكير
mathbfv من خلال مستوى عمودي
mathbfa .
يتم ذلك بالطريقة المعتادة: نحن نشارك
mathbfv من ناحية عمودي على المستوى:
mathbfv amb=( mathbfv cdot mathbfa) mathbfa ، والجزء الموازي للمستوى:
mathbfv\allel= mathbfv− mathbfv circ= mathbfv−( mathbfv cdot mathbfa) mathbfa .
ثم ، من أجل عكس المتجه ، نقلب الجزء المتعامد ، ونترك الجزء الموازي دون تغيير:
\ start {eqnarray} R _ {\ mathbf {a}} (\ mathbf {v}) & = & \ mathbf {v} _ \allel - \ mathbf {v} _ \ circ \\ & = & (\ mathbf { v} - (\ mathbf {v} \ cdot \ mathbf {a}) \ mathbf {a}) - ((\ mathbf {v} \ cdot \ mathbf {a}) \ mathbf {a}) \\ & = & \ mathbf {v} - 2 (\ mathbf {v} \ cdot \ mathbf {a}) \ mathbf {a} \ end {eqnarray}
3.4. صيغة انعكاس (عرض للمنتج الهندسي)
في هذه المرحلة ، يمكننا استبدال المنتج العددي
mathbfv cdot mathbfa على نسخته في شكل منتج هندسي
frac12( mathbfv mathbfa+ mathbfa mathbfv) ، واحصل على ما يلي:
\ start {eqnarray} R _ {\ mathbf {a}} (\ mathbf {v}) & = & \ mathbf {v} - 2 (\ frac {1} {2} (\ mathbf {v} \ mathbf {a } + \ mathbf {a} \ mathbf {v})) \ mathbf {a} \\ & = & \ mathbf {v} - \ mathbf {v} \ mathbf {a} ^ 2 - \ mathbf {a} \ mathbf {v} \ mathbf {a} \\ & = & - \ mathbf {a} \ mathbf {v} \ mathbf {a} \ end {eqnarray}
(
mathbfa2= mathbfa cdot mathbfa=1 منذ ذلك الحين
mathbfa هو متجه الوحدة)
هذا يعطينا نفس الشيء بالضبط ، ولكن في إدخال مختلف. إن استخدام سجل على شكل منتج بسيط بدلاً من صيغة لتشفير مثل هذه العملية الأساسية مثل التفكير سيكون مفيدًا جدًا!
كيف يعمل منتج هندسي متعدد؟إذا كنت لا تفهم كيف يعمل أخذ منتج هندسي متعدد ، فما عليك سوى إلقاء نظرة على المتجهات الأساسية. هناك ثلاث حالات محتملة فقط:
\ start {eqnarray} \ mathbf {x} (\ mathbf {x} \ mathbf {x}) & = & \ mathbf {x} 1 = \ mathbf {x} \\ \ mathbf {x} (\ mathbf {x } \ mathbf {y}) & = & \ mathbf {x} (\ mathbf {x} \ cdot \ mathbf {y} + \ mathbf {x} \ wedge \ mathbf {y}) = \ mathbf {x} (\ mathbf {x} \ cdot \ mathbf {y}) + \ mathbf {x} \ mathbf {x} \ mathbf {y} = \ mathbf {x} (\ mathbf {x} \ cdot \ mathbf {y}) + \ mathbf {y} \\ \ mathbf {x} (\ mathbf {y} \ mathbf {z}) & = & \ mathbf {x} (\ mathbf {y} \ cdot \ mathbf {z}) + \ mathbf {x} } \ mathbf {y} \ mathbf {z} \ end {eqnarray}
ستكون النتائج: ناقل ، متجه ، متجه + trivector. ومع ذلك ، يمكن أن تحدث الحالة الأخيرة فقط عندما تكون جميع المتجهات الثلاثة مستقلة ، وهذا لا ينطبق على الإطلاق − mathbfava
التفاصيليمكن للأشخاص الفضوليين أن ينظروا إلى ما يحدث في كل مرحلة. − mathbfa mathbfv mathbfa من حيث المنتج الهندسي.
- المرحلة الأولى:
mathbfv mathbfa= mathbfv cdot mathbfa+ mathbfv wedge mathbfa
إذا انقسمنا ، كما كان من قبل mathbfv إلى الجزء العمودي على المستوى ( mathbfv circ ) ، والجزء الموازي لها ( mathbfv $المواز ) ، ثم نحصل على:
\ start {eqnarray} (\ mathbf {v} _ \ circ + \ mathbf {v} _ \allel) \ mathbf {a} & = & & (\ mathbf {v} _ \ circ + \ mathbf {v} _ \ موازٍ) \ cdot \ mathbf {a} + (\ mathbf {v} _ \ circ + \ mathbf {v} _ \allel) \ wedge \ mathbf {a} \\ & = & \ mathbf {v} _ \ circ \ cdot \ mathbf {a} + \ mathbf {v} _ \allel \ cdot \ mathbf {a} + \ mathbf {v} _ \ circ \ wedge \ mathbf {a} + \ mathbf {v} _ \allel \ wedge \ mathbf {a} \ end {eqnarray}
mathbfv\allel cdot mathbfa=0 ، لأن هذه المتجهات متعامدة ، و mathbfv circ wedge mathbfa=0 لأن هذه النواقل متوازية.
mathbfv mathbfa= mathbfv circ cdot mathbfa+ mathbfv\allel wedge mathbfa
المصطلح الأول هو مجرد طول الإسقاط mathbfv على mathbfa ، أي المصطلح الأول هو الطول فقط mathbfv circ .
دعنا نتصل hat mathbfv\allel نسخة طبيعية mathbfv $المواز هذا هو mathbfv\allel= hat mathbfv\allel | mathbfv\allel | . ثم المصطلح الثاني هو مجرد مفاعل mathbfB= hat mathbfv\allel wedge mathbfa ضرب الطول mathbfv $المواز .
هذا المفاعل mathbfB تتكون من متجهين متعامدين ، أي أن هذا تمثيل نظيف للغاية لمستوى المتجهات mathbfa و mathbfv . لا تحتوي على معلومات حول الزاوية النسبية أو أطوالها ، فقط اتجاه الطائرة.
أي أن كلا المصطلحين مجرد تحليلات mathbfv على اثنين من الإسقاطات المتعامدة ( mathbfv $المواز و mathbfv circ ) ، بالإضافة إلى المستوى الذي تشكله ( mathbfB ):
| mathbfv circ |+ | mathbfv\allel | mathbfB
قبل الانتقال إلى الخطوة التالية ، يمكننا استبدال المنتج الخارجي بأخرى هندسية ، لأن mathbfa و mathbfv $المواز متعامدة ، وبالتالي فإن منتجها الخارجي والهندسي سيكون متكافئًا (نظرًا لأن الجزء مع المنتج القياسي من منتجهم الهندسي يساوي الصفر).
mathbfv circ cdot mathbfa+ mathbfv\allel wedge mathbfa= mathbfv circ cdot mathbfa+ mathbfv\allel mathbfa
- ستكون المرحلة الثانية على النحو التالي:
mathbfa mathbfv mathbfa= mathbfa( mathbfv circ cdot mathbfa)+ mathbfa mathbfv الموازي mathbfa
العضو الأول هو مجرد مكون mathbfv على طول mathbfa ، أي مكون mathbfv عمودي على المستوى. وبعبارة أخرى ، المصطلح الأول هو عادل mathbfv circ .
mathbfa mathbfv mathbfa= mathbfv conn+ mathbfa mathbfv\allel mathbfa
منذ ذلك الحين mathbfa و mathbfv $المواز (مرة أخرى) متعامدة ، منتجها الهندسي هو ببساطة منتجها الخارجي ، أي أنه يمكنك تبديلها وتغيير العلامة.
\ start {eqnarray} \ mathbf {a} \ mathbf {v} \ mathbf {a} & = & \ mathbf {v} _ \ syn - \ mathbf {v} _ \allel \ mathbf {a} \ mathbf {a } \\ & = & \ mathbf {v} _ \ المواصفة - \ mathbf {v} _ \ الموازي \ النهاية {eqnarray}
- وأخيرًا ، تقلب المرحلة الأخيرة العلامة:
− mathbfa mathbfv mathbfa=− mathbfv conn+ mathbfv\allel
أي أننا نرى أن المكون mathbfv عمودي على المستوى ، مقلوبًا رأسًا على عقب ، لكن الجزء الموازي يبقى كما هو!
ملاحظةالطول mathbfa ليس مهمًا جدًا ، لذا نتجاهله أدناه ، ولكن إذا mathbfa ليس متجه وحدة ، ثم يجب أن نقسم على طوله وتتحول الصيغة إلى − mathbfa mathbfv mathbfa−1 ، وهو أشبه بـ "منتج متعدد الطبقات" ، كان يجب أن تعتاد عليه.
3.5. انعكاسان منعطفان: الوضع في 2D
اتضح أنه إذا تقدمنا بطلب
mathbfv انعكاسين متتاليين (أولاً مع ناقل
mathbfa ثم مع المتجه
mathbfb ) ، ثم نحصل على
دوران بزاوية ضعف بين المتجهات mathbfa و mathbfb .يمكننا إظهار كل مرحلة لاحقة من التفكير في الرسم البياني أدناه:
يمكنك أيضًا تغيير المتجهات في المقالة الأصلية.
mathbfa ،
mathbfb و
mathbfv ، لكن التكوين الأولي للمتجهات على الرسم البياني (انقر على زر "إعادة تعيين مواقع المتجه") يوضح بشكل خاص سبب حدوث التدوير نتيجة لذلك بزاوية
مزدوجة . تكوين جيد آخر هو تعيين
mathbfa و
mathbfb محاور
mathbfx و
mathbfy .
3.6. انعكاسان منعطفان: الوضع ثلاثي الأبعاد
في حالة ناقلات 3D
mathbfv يمكن تقسيمها إلى قسمين ، أحدهما يقع على المستوى المعطى
mathbfa و
mathbfb ، والآخر يقع خارج الطائرة (عموديًا عليه). كما هو موضح في الرسم البياني أدناه ، عندما تنعكس المتجه بواسطة كل طائرة ، يظل الجزء الخارجي كما هو. أما بالنسبة للداخل ، فقد عدنا إلى ثنائي الأبعاد ، وهو يدور ضعف الزاوية!
3.7. الدوارات
من وجهة نظر المنتج الهندسي ، يتطابق انعكاسان ببساطة مع ما يلي:
R mathbfb(R mathbfa( mathbfv))=− mathbfb(− mathbfa mathbfv mathbfa) mathbfb= mathbfb mathbfa mathbfv mathbfa mathbfb
نتصل
mathbfa mathbfb= mathbfa cdot mathbfb+ mathbfa wedge mathbfb الدوار بسبب الضرب في
mathbfa mathbfb على جانبي المتجه ، نقوم بإجراء دوران (
mathbfb mathbfa هو نفسه
mathbfa mathbfb ، فقط في مفاعل الجزء المقلوب).
تطبيق الدوار
mathbfa mathbfb على جانبي المتجه يدور هذا المتجه في مستوى المتجهات
mathbfa و
mathbfb ضعف الزاوية بين
mathbfa و
mathbfb .
هذا كل ما في الأمر!مقارنة بين الدوارات ثلاثية الأبعاد والرباعيات
يمكنك أن ترى أن الدوارات ثلاثية الأبعاد تشبه إلى حد كبير quaternions:
a+Bxy mathbfx wedge mathbfy+Bxz mathbfx wedge mathbfz+Byz mathbfy إسفين mathbfz
a+b mathbfi+c mathbfj+d mathbfk
في الواقع ، الكود / الرياضيات هو نفسه إلى حد كبير! الفرق الرئيسي هو ذلك
mathbfi ،
mathbfj و
mathbfk تم استبداله بـ
mathbfy wedge mathbfz ،
mathbfx wedge mathbfz و
mathbfx wedge mathbfy لكنهم يعملون في الأساس نفس الشيء. يمكن العثور على مقارنة الكود
هنا . لم أقم بتنفيذ كل شيء ، على سبيل المثال log / exp للاستيفاء ، ولكن إنشاءها بسيط للغاية.
ومع ذلك ، كما رأينا ، فإن الدوارات ثلاثية الأبعاد هي مفهوم ثلاثي الأبعاد لا يتطلب استخدام "دورات مزدوجة رباعية الأبعاد" أو "إسقاط مجسم" للتصور. إن محاولة تصور quaternions التي تعمل في 4D لشرح التدوير ثلاثي الأبعاد يشبه إلى حد ما محاولة فهم حركة الكواكب من وجهة نظر مركزية الأرض. أي هذا النهج معقد للغاية لأننا ننظر إليه من وجهة نظر خاطئة.
كما رأينا ، فإن نمذجة الدوران كما يحدث داخل الطائرات ، وليس حول المتجهات ، يساعدنا كثيرًا. على سبيل المثال ، تعطي مربعات bive bives
−1 ، تمامًا مثل الأرباع الأساسية (
mathbfi2= mathbfj2= mathbfk2=−1 ):
( mathbfx mathbfy)2=( mathbfx mathbfy)( mathbfx mathbfy)=−( mathbfy mathbfx)( mathbfx mathbfy)=− mathbfy( mathbfx mathbfx) mathbfy=− mathbfy mathbfص=−1
إن ضرب اثنين من المفاعلات ببعضهما يعطي مفاعلًا ثالثًا ، ولكنه في الواقع تافه ، ولا نحتاج إلى تذكر ذلك
mathbfi mathbfj= mathbfk :
( mathbfx mathbfy)( mathbfy mathbfz)= mathbfx( mathbfy mathbfy) mathbfz= mathbfx mathbfz
(لاحظ أننا استخدمنا
mathbfx wedge mathbfy= mathbfx mathbfy )
هذه الخصائص هي نتاج منتج هندسي ، ولا تنشأ من العدم!
قراءة إضافية
(بالمناسبة ، في الجبر الهندسي لا توجد دوارات فقط ، ولكن أيضًا أشياء رائعة أخرى!)
- الجبر الخطي والهندسي بواسطة ماكدونالد [ رابط إلى أمازون ]
مصدر ممتاز ، واضح جدًا ومفهوم ، لأنه يشير ضمنيًا إلى أنه سيحل محل كتاب الجبر الخطي للطلاب. - الجبر الهندسي لعلوم الكمبيوتر من دورست وآخرون. [ رابط إلى أمازون ]
مصدر رائع ، لأن البرمجة تتيح لك أحيانًا فهم الموضوع بشكل أفضل.ملاحظة: في هذا الكتاب ، أوضح المؤلفون أن الجبر الهندسي أبطأ من الأرباع (وما شابه ...). في الواقع ، يجب أن يحتوي على نفس الرمز تقريبًا (على سبيل المثال ، لا يجب أن تكتب رمزًا للجبر الهندسي ، وإنشاء بنية عامة يمكن أن تحتوي على جميع الأنواع المحتملة من المتجهات k ، فقط اكتب ، إذا لزم الأمر ، بنية واحدة لكل نوع من المتجهات k بمعنى ، لاستبدال الرباعيات ، يمكنك كتابة بنية Bivector واحدة وهيكل دوار واحد ، وهو Scalar + Bivector).