3-کواترنیون ها و چرخش فضایی

ساخت وبلاگ

کواترنیون ها [ ویرایش ]

نوشتار اصلی: کواترنیون ها

اعداد مختلط را می توان با معرفی یک نماد انتزاعی i که قوانین معمول جبر را برآورده می کند و همچنین قانون i 2 = -1 را تعریف کرد. این برای بازتولید همه قوانین حسابی اعداد مختلط کافی است: به عنوان مثال:

(a+bmathbf {i} )(c+dmathbf {i} )=ac+admathbf {i} +bmathbf {i} c+bmathbf {i} dmathbf {i} =ac+admathbf {i} +bcmathbf {i} +bdmathbf {i} ^{2}=(ac-bd)+(bc+ad)mathbf {i}.

به همین ترتیب، چهارتایی ها را می توان با معرفی نمادهای انتزاعی i ، j ، k تعریف کرد که قوانین i 2 = j 2 = k 2 = i j k = −1 و قوانین جبری معمول به جز قانون جابجایی ضرب را برآورده می کند (مثال آشنا از چنین ضرب غیر تعویضی، ضرب ماتریسی است ). از این همه قواعد محاسباتی کواترنیونی پیروی می شود، مانند قواعد ضرب عناصر پایه کواترنیونی . با استفاده از این قوانین می توان نشان داد که:

{displaystyle {begin{تراز شده}&(a+bmathbf {i} +cmathbf {j} +dmathbf {k})(e+fmathbf {i} +gmathbf {j} +hmathbf {k} )=&(ae-bf-cg-dh)+(af+be+ch-dg)mathbf {i} +(ag-bh+ce+df)mathbf {j } +(ah+bg-cf+de)mathbf {k} .end{تراز شده}}}

قسمت خیالی bmathbf {i} +cmathbf {j} +dmathbf {k}یک کواترنیون مانند یک بردار رفتار می کند{vec {v}}=(b،c،d)در فضای برداری سه بعدی ، و قسمت حقیقی a مانند یک اسکالر در R عمل می کند. وقتی از ربات ها در هندسه استفاده می شود، راحت تر است که آنها را به عنوان یک اسکالر به اضافه یک بردار تعریف کنیم :

a+bmathbf {i} +cmathbf {j} +dmathbf {k} =a+{vec {v}}.

برای برخی ممکن است عجیب باشد که یک عدد را به یک بردار اضافه کنند، زیرا آنها اشیایی با طبیعت بسیار متفاوت هستند، یا ضرب دو بردار در یکدیگر، زیرا این عمل معمولاً تعریف نشده است. با این حال، اگر به یاد داشته باشید که این یک نماد صرف برای بخش های حقیقی و خیالی یک کواترنیون است، مشروع تر می شود. به عبارت دیگر، استدلال صحیح، جمع دو چهارتایی است، یکی با بردار/قسمت خیالی صفر و دیگری با بخش اسکالر/حقیقی صفر:

{displaystyle q_{1}=s+{vec {v}}=left(s,{vec {0}}right)+left(0,{vec {v}}right).}

ما می‌توانیم ضرب کواترنیون را به زبان امروزی حاصل ضربات بردار و نقطه‌ای بیان کنیم (که در وهله اول از کواترنیون‌ها الهام گرفته‌اند [ 10] ). هنگام ضرب بردار/قطعات خیالی، به جای قواعد i 2 = j 2 = k 2 = ijk = -1 ، قانون ضرب چهارگانه را داریم:

{displaystyle {vec {v}}{vec {w}}=-{vec {v}}cdot {vec {w}}+{vec {v}}times {vec {w }}،}

جایی که:

  • {vec {v}}{vec {w}}کواترنیون حاصل است،
  • {vec {v}}times {vec {w}}حاصلضرب متقاطع برداری است (بردار)،
  • {vec {v}}cdot {vec {w}}ضرب اسکالر برداری (یک اسکالر) است.

ضرب کواترنیونی غیر جابجایی است (به دلیل حاصلضرب متقاطع که ضد جابجایی است )، در حالی که ضرب های اسکالر-اسکالر و اسکالر-بردار جابجایی دارند. از این قوانین بلافاصله نتیجه می شود که ( به جزئیات مراجعه کنید ):

{displaystyle q_{1}q_{2}=left(s+{vec {v}}right)left(t+{vec {w}}right)=left(st-{vec { v}}cdot {vec {w}}right)+left(s{vec {w}}+t{vec {v}}+{vec {v}}times {vec { w}}راست).}

معکوس ضربی (چپ و راست) یا متقابل یک چهارتایی غیرصفر با نسبت مزدوج به هنجار به دست می آید ( به جزئیات مراجعه کنید ):

{displaystyle q_{1}^{-1}=left(s+{vec {v}}right)^{-1}={frac {left(s+{vec {v}}right )^{*}}{lVert s+{vec {v}}rVert ^{2}}}={frac {s-{vec {v}}}{s^{2}+lVert { vec {v}}rVert ^{2}}}،}

همانطور که می توان با محاسبه مستقیم تأیید کرد (به شباهت با معکوس ضربی اعداد مختلط توجه کنید ).

همانی چرخش [ ویرایش ]

مقاله اصلی: فرمول چرخش رودریگز

اجازه دهیدتو→{vec {u}}یک بردار واحد (محور چرخش) باشد و اجازه دهیدq=cos {frac {alpha }{2}}+{vec {u}}sin {frac {alpha }{2}}. هدف ما نشان دادن آن است

{displaystyle {vec {v}}'=q{vec {v}}q^{-1}=left(cos {frac {alpha }{2}}+{vec {u} }sin {frac {alpha }{2}}right),{vec {v}},left(cos {frac {alpha }{2}}-{vec {u }}sin {frac {alpha }{2}}right)}

بردار را به دست می دهد→{vec {v}}با یک زاویه چرخیده است آلفاحول محورتو→{vec {u}}. در حال گسترش (و در نظر گرفتن آن{displaystyle {vec {u}}{vec {v}}={vec {u}}times {vec {v}}-{vec {u}}cdot {vec {v} }})، ما داریم

{displaystyle {begin{aligned}{vec {v}}'&={vec {v}}cos ^{2}{frac {alpha }{2}}+left({vec {u}}{vec {v}}-{vec {v}}{vec {u}}right)sin {frac {alpha }{2}}cos {frac {alpha }{2}}-{vec {u}}{vec {v}}{vec {u}}sin ^{2}{frac {alpha }{2}}[6pt]& ={vec {v}}cos ^{2}{frac {alpha }{2}}+2left({vec {u}}times {vec {v}}right) sin {frac {alpha }{2}}cos {frac {alpha }{2}}-left(left({vec {u}}times {vec {v}}right )-left({vec {u}}cdot {vec {v}}right)right){vec {u}}sin ^{2}{frac {alpha }{2} }[6pt]&={vec {v}}cos ^{2}{frac {alpha }{2}}+2left({vec {u}}times {vec { v}}right)sin {frac {alpha }{2}}cos {frac {alpha }{2}}-left(left({vec {u}}times { vec {v}}right){vec {u}}-left({vec {u}}cdot {vec {v}}right){vec {u}}right)sin ^{2}{frac {alpha }{2}}[6pt]&={vec {v}}cos ^{2}{frac {alpha }{2}}+2left({vec {u}}times {vec {v}}right) sin {frac {alpha }{2}}cos {frac {alpha }{2}}-left(left(left({vec {u}}times {vec {v} }right)times {vec {u}}-left({vec {u}}times {vec {v}}right)cdot {vec {u}}right)- چپ ({vec {u}}cdot {vec {v}}right){vec {u}}right)sin ^{2}{frac {alpha }{2}} [6pt]&={vec {v}}cos ^{2}{frac {alpha }{2}}+2left({vec {u}}times {vec {v}} right)sin {frac {alpha }{2}}cos {frac {alpha }{2}}-left(left({vec {v}}-left({vec {u}}cdot {vec {v}}right){vec {u}}right)-0-left({vec {u}}cdot {vec {v}}right ){vec {u}}right)sin ^{2}{frac {alpha }{2}}[6pt]&={vec {v}}cos ^{2}{frac {alpha }{2}}+2left({vec {u}}times {vec {v}}right) sin {frac {alpha }{2}}cos {frac {alpha }{2}}-left({vec {v}}-2{vec {u}}left({ vec {u}}cdot {vec {v}}right)right)sin ^{2}{frac {alpha }{2}}[6pt]&={vec {v} }cos ^{2}{frac {alpha }{2}}+2left({vec {u}}times {vec {v}}right)sin {frac {alpha }{2}}cos {frac {alpha }{2}}-{vec {v}}sin ^{2}{frac {alpha }{2}}+2{vec {u }}left({vec {u}}cdot {vec {v}}right)sin ^{2}{frac {alpha }{2}}[6pt]&={ vec {v}}left(cos ^{2}{frac {alpha }{2}}-sin ^{2}{frac {alpha }{2}}right)+left( {vec {u}}times {vec {v}}right)left(2sin {frac {alpha }{2}}cos {frac {alpha }{2}} راست)+{vec {u}}left({vec {u}}cdot {vec {v}}right)left(2sin ^{2}{frac {alpha }{ 2}}راست)[6pt]end{تراز شده}}}={vec {v}}left(cos ^{2}{frac {alpha }{2}}-sin ^{2}{frac {alpha }{2}}right)+ left({vec {u}}times {vec {v}}right)left(2sin {frac {alpha }{2}}cos {frac {alpha }{2 }}right)+{vec {u}}left({vec {u}}cdot {vec {v}}right)left(2sin ^{2}{frac { آلفا {2}}راست)[6pt]end{تراز شده}}}

استفاده از همانی های مثلثاتی :

{displaystyle {begin{aligned}{vec {v}}'&={vec {v}}left(cos ^{2}{frac {alpha }{2}}-sin ^ {2}{frac {alpha }{2}}right)+left({vec {u}}times {vec {v}}right)left(2sin {frac { alpha }{2}}cos {frac {alpha }{2}}right)+{vec {u}}left({vec {u}}cdot {vec {v}} right)left(2sin ^{2}{frac {alpha }{2}}right)[6pt]&={vec {v}}cos alpha +left({ vec {u}}times {vec {v}}right)sin alpha +{vec {u}}left({vec {u}}cdot {vec {v}} راست)left(1-cos alpha right)[6pt]&={vec {v}}cos alpha +left({vec {u}}times {vec {v }}right)sin alpha +{vec {u}}left({vec {u}}cdot {vec {v}}right)-{vec {u}}left( {vec {u}}cdot {vec {v}}right)cos alpha [6pt]&=left({vec {v}}-{vec {u}}left({vec {u}}cdot {vec {v}}right)right)cos alpha + چپ({vec {u}}times {vec {v}}right)sin alpha +{vec {u}}left({vec {u}}cdot {vec {v }}right)[6pt]&={vec {v}}_{bot }cos alpha +left({vec {u}}times {vec {v}}right )sin alpha +{vec {v}}_{|}end{تراز شده}}}

جایی که→⊥{vec {v}}_{bot }و→"{vec {v}}_{|}اجزای v → (به ترتیب عمود و موازی u → ) هستند. این فرمول یک چرخش توسط است آلفاحول محور u

عملیات چرخش کواترنیون [ ویرایش ]

توضیح بسیار رسمی در مورد خواص استفاده شده در این بخش توسط آلتمن ارائه شده است. [11]

ابرکره چرخش ها [ ویرایش ]

مقاله اصلی: چرخش گروه SO(3)

تجسم فضای چرخش [ ویرایش ]

کواترنیون های واحد گروه چرخش های اقلیدسی را در سه بعدی به روشی بسیار ساده نشان می دهند. مطابقت بین چرخش ها و چهارتایی ها را می توان با تجسم فضای خود چرخش ها درک کرد.

دو چرخش مجزا، که هم از نظر زاویه و هم از نظر محور، در فضای چرخش ها متفاوت است. در اینجا، طول هر بردار محور نسبت به بزرگی چرخش مربوط به آن محور است.

برای تجسم فضای چرخش ها، در نظر گرفتن یک مورد ساده تر کمک می کند. هر چرخش در سه بعد را می توان با چرخش با زاویه ای حول یک محور توصیف کرد. برای اهداف خود، از یک بردار محور برای ایجاد دستی برای زاویه خود استفاده خواهیم کرد. حالت خاصی را در نظر بگیرید که در آن محور چرخش در صفحه xy قرار دارد. سپس می‌توانیم محور یکی از این چرخش‌ها را با نقطه‌ای از دایره‌ای که بردار از آن عبور می‌کند، مشخص کنیم و می‌توانیم شعاع دایره را برای نشان دادن زاویه چرخش انتخاب کنیم.

به طور مشابه، چرخشی که محور چرخش آن در صفحه xy قرار دارد را می توان به عنوان نقطه ای روی کره ای با شعاع ثابت در سه بعدی توصیف کرد. با شروع از قطب شمال یک کره در فضای سه بعدی، نقطه قطب شمال را به عنوان چرخش همانی (چرخش با زاویه صفر) مشخص می کنیم. همانطور که در مورد چرخش همانی، هیچ محور چرخشی تعریف نشده است و زاویه چرخش (صفر) بی ربط است. چرخشی با زاویه چرخش بسیار کوچک را می توان با یک برش از کره موازی با xy مشخص کرد.هواپیما و بسیار نزدیک به قطب شمال. دایره ای که توسط این برش تعریف می شود بسیار کوچک خواهد بود که مطابق با زاویه کوچک چرخش است. با بزرگتر شدن زوایای چرخش، برش در جهت منفی z حرکت می‌کند و دایره‌ها بزرگتر می‌شوند تا به خط استوای کره برسند که با زاویه چرخش 180 درجه مطابقت دارد. در ادامه به سمت جنوب، شعاع دایره ها اکنون کوچکتر می شوند (مطابق با مقدار مطلق زاویه چرخش در نظر گرفته شده به عنوان یک عدد منفی). در نهایت، با رسیدن به قطب جنوب، دایره ها یک بار دیگر به سمت چرخش همانی کوچک می شوند، که به عنوان نقطه در قطب جنوب نیز مشخص می شود.

توجه داشته باشید که تعدادی از ویژگی های این چرخش ها و نمایش آنها را می توان با این تجسم مشاهده کرد. فضای چرخش ها پیوسته است، هر چرخش دارای همسایگی چرخش هایی است که تقریباً یکسان هستند و با کوچک شدن محله این همسایگی صاف می شود. همچنین، هر چرخش در واقع با دو نقطه پادپای روی کره نشان داده می شود که در انتهای مخالف یک خط از مرکز کره هستند. این نشان دهنده این حقیقیت است که هر چرخش را می توان به عنوان یک چرخش حول یک محور، یا به طور معادل، به عنوان یک چرخش منفی حول محوری که در جهت مخالف قرار دارد (به اصطلاح پوشش دوگانه ) نشان داد.). "عرض جغرافیایی" یک دایره که نمایانگر یک زاویه چرخش خاص است، نیمی از زاویه نشان داده شده توسط آن چرخش خواهد بود، زیرا با انتقال نقطه از شمال به قطب جنوب، عرض جغرافیایی از صفر تا 180 درجه متغیر است، در حالی که زاویه چرخش از 0 تا 360 درجه متغیر است. (سپس "طول جغرافیایی" یک نقطه نشان دهنده یک محور چرخش خاص است.) اما توجه داشته باشید که این مجموعه چرخش ها تحت ترکیب بسته نمی شوند. دو چرخش متوالی با محورها در صفحه xy لزوماً چرخشی ایجاد نمی کند که محور آن در صفحه xy قرار دارد و بنابراین نمی توان آن را به عنوان یک نقطه روی کره نشان داد. این مورد در مورد چرخش کلی در 3 فضایی که در آن چرخش ها یک مجموعه بسته را تحت ترکیب تشکیل می دهند، صادق نخواهد بود.

کره چرخش برای چرخش هایی که محور "افقی" دارند (در صفحه xy ).

این تجسم را می توان به یک چرخش کلی در فضای 3 بعدی گسترش داد. چرخش همانی یک نقطه است و یک زاویه چرخش کوچک حول یک محور را می توان به عنوان نقطه ای روی کره ای با شعاع کوچک نشان داد. با افزایش زاویه چرخش، کره رشد می کند، تا زمانی که زاویه چرخش به 180 درجه می رسد، در این نقطه، کره شروع به کوچک شدن می کند و با نزدیک شدن زاویه به 360 درجه (یا صفر درجه از جهت منفی) تبدیل به یک نقطه می شود. این مجموعه از کره های در حال انبساط و انقباض یک ابرکره را در فضای چهار بعدی نشان می دهد(یک 3 کره). همانطور که در مثال ساده‌تر بالا، هر چرخشی که به‌عنوان نقطه‌ای در ابرکره نشان داده می‌شود، با نقطه پادپای آن در ابرکره مطابقت دارد. "عرض جغرافیایی" در ابرکره نیمی از زاویه چرخش متناظر خواهد بود، و همسایگی هر نقطه "مسطح تر" می شود (یعنی با فضای سه بعدی اقلیدسی از نقاط نشان داده می شود) با کوچک شدن همسایگی. این رفتار با مجموعه‌ای از کواترنیون‌های واحد مطابقت دارد: یک کواترنیون عمومی نقطه‌ای را در یک فضای چهار بعدی نشان می‌دهد، اما محدود کردن آن برای داشتن قدر واحد، فضایی سه‌بعدی معادل سطح یک ابرکره را به دست می‌دهد. بزرگی کواترنیون واحد، واحد خواهد بود که مربوط به ابرکره شعاع واحد است. قسمت برداری یک کواترنیون واحد نشان دهنده شعاع 2 کره مربوط به محور چرخش است و بزرگی آن کسینوس نیمی از زاویه چرخش است. هر چرخش با دو کواترنیون واحد با علامت مخالف نشان داده می شود و مانند فضای چرخش های سه بعدی، حاصلضرب کواترنیونی دو کواترنیون واحد، یک کواترنیون واحد به دست می دهد. همچنین فضای کواترنیون های واحد در هر همسایگی بینهایت کوچک یک کواترنیون واحد «مسطح» است.

پارامترسازی فضای چرخش [ ویرایش ]

ما می توانیم سطح یک کره را با دو مختصات مانند طول و عرض جغرافیایی پارامتر کنیم. اما طول و عرض جغرافیایی در قطب‌های شمال و جنوب بد رفتار می‌شوند ( منحط ) اگرچه قطب‌ها ذاتاً با سایر نقاط کره تفاوت ندارند. در قطب ها (عرض های جغرافیایی 90+ و 90- درجه)، طول جغرافیایی بی معنی می شود.

می توان نشان داد که هیچ سیستم مختصات دو پارامتری نمی تواند از چنین انحطاطی جلوگیری کند. ما می توانیم با قرار دادن کره در فضای سه بعدی و پارامترسازی آن با سه مختصات دکارتی ( w ,  x ,  y ) از چنین مشکلاتی جلوگیری کنیم و قطب شمال را در ( w ,  x ,  y ) = (1, 0, 0) قرار دهیم. قطب جنوب در ( w ,  x ,  y ) = (-1, 0, 0) و استوا در w = 0 , x 2 + y 2 = 1 . نقاط روی کره محدودیت را برآورده می کنندw 2 + x 2 + y 2 = 1 ، بنابراین ما هنوز فقط دو درجه آزادی داریم اگرچه سه مختصات وجود دارد. یک نقطه ( w ,  x ,  y ) روی کره نشان دهنده چرخشی در فضای معمولی حول محور افقی است که توسط بردار ( x ,  y , 0) توسط یک زاویه.

به همین ترتیب فضای ابرکروی چرخش های سه بعدی را می توان با سه زاویه (زوایای اویلر ) پارامتر کرد، اما هر گونه پارامترسازی در برخی از نقاط ابرکره تخریب می شود و منجر به مشکل قفل گیمبال می شود. ما می توانیم با استفاده از چهار مختصات اقلیدسی w ,  x ,  y ,  z با w 2 + x 2 + y 2 + z 2 = 1 از این امر جلوگیری کنیم . نقطه ( w ,  x ,  y ,  z )نشان دهنده چرخش حول محور است که توسط بردار ( x ,  y ,  z ) توسط یک زاویه هدایت می شود.=2cos-1⁡=2گناه-1⁡ایکس2+2+2.alpha =2cos ^{-1}w=2sin ^{-1}{sqrt {x^{2}+y^{2}+z^{2}}}.

توضیح ویژگی‌های کواترنیون‌ها با چرخش [ ویرایش ]

غیر تعویضی [ ویرایش ]

ضرب کواترنیون ها غیر تعویضی است. این حقیقیت توضیح می دهد که چگونه فرمول pq p q − 1 می تواند به طور کلی کار کند و طبق تعریف qq -1 = 1 دارد. از آنجایی که ضرب کواترنیون های واحد با ترکیب چرخش های سه بعدی مطابقت دارد، این ویژگی را می توان با نشان دادن اینکه چرخش های سه بعدی به طور کلی جابجایی نیستند، شهودی کرد.

دو کتاب را در کنار هم قرار دهید. یکی از آنها را 90 درجه در جهت عقربه های ساعت حول محور z بچرخانید ، سپس آن را 180 درجه حول محور x بچرخانید . کتاب دیگر را بردارید، ابتدا 180 درجه حول محور x و بعد 90 درجه حول محور z بچرخانید . این دو کتاب در نهایت موازی نیستند. این نشان می دهد که، به طور کلی، ترکیب دو چرخش مختلف حول دو محور فضایی متمایز، جابجایی نخواهد داشت.

جهت گیری [ ویرایش ]

حاصلضرب متقاطع برداری ، که برای تعریف نمایش محور-زاویه استفاده می شود، یک جهت ("دست بودن") به فضا می دهد: در یک فضای برداری سه بعدی، سه بردار موجود در معادله a  ×  b = c همیشه یک راست تشکیل می دهند. مجموعه دستی (یا یک مجموعه چپ دست، بسته به اینکه ضرب متقاطع چگونه تعریف می شود)، بنابراین یک جهت را در فضای برداری ثابت می کند. از طرف دیگر، وابستگی به جهت گیری با ارجاع به چنین u → بیان می شود که چرخشی را به عنوان بردارهای محوری مشخص می کند. در فرمالیسم چهارتایی، انتخاب جهت فضا با ترتیب ضرب مطابقت دارد: ij = kاما ji = − k . اگر جهت گیری را معکوس کنیم، فرمول بالا به pq −1  p q تبدیل می شود ، به عنوان مثال، یک واحد q با کواترنیون مزدوج جایگزین می شود - همان رفتار بردارهای محوری.

قراردادهای جایگزین [ ویرایش ]

گزارش شده است [12] که وجود و استفاده مداوم از یک قرارداد کواترنیون جایگزین در هوافضا و تا حدودی جامعه روباتیک هزینه قابل توجه و مداومی را متحمل می شود [ sic ]. این قرارداد جایگزین توسط Shuster MD در [13] پیشنهاد شده است و با معکوس کردن تعریف ضرب المان های پایه کواترنیون به گونه ای که طبق قرارداد شوستر، از سنت فاصله می گیرد،{displaystyle mathbf {i} mathbf {j} =-mathbf {k} }در حالی که تعریف همیلتون این است{displaystyle mathbf {i} mathbf {j} =mathbf {k} }. این کنوانسیون همچنین به عنوان "کنوانسیون JPL" برای استفاده از آن در برخی از بخش‌های آزمایشگاه رانش جت ناسا شناخته می‌شود .

طبق قرارداد شوستر، فرمول ضرب دو کواترنیون به گونه ای تغییر می کند که

{displaystyle left(r_{1}, {vec {v}}_{1}right)left(r_{2}, {vec {v}}_{2}right)= left(r_{1}r_{2}-{vec {v}}_{1}cdot {vec {v}}_{2}, r_{1}{vec {v}}_ {2}+r_{2}{vec {v}}_{1}mathbin {color {red}mathbf {-} } {vec {v}}_{1}times {vec { v}}_{2}right),qquad {text{(کنوانسیون جایگزین، استفاده ممنوع!)}}}

فرمول چرخش یک بردار توسط یک کواترنیون تغییر می کند تا باشد

{displaystyle {begin{aligned}mathbf {p} '_{text{alt}}={}&(mathbf {v} otimes mathbf {v} +q_{r}^{2} mathbf {I} mathbin {color {red}mathbf {-} } 2q_{r}[mathbf {v} ]_{times }+[mathbf {v} ]_{times ^{2 })mathbf {p} &{text{(قرارداد جایگزین، استفاده ممنوع!)}}=& (mathbf {I} mathbin {color {red}mathbf {-} } 2q_{r [mathbf {v} ]_{times }+2[mathbf {v} ]_{times }^{2})mathbf {p} &end{تراز شده}}}

برای شناسایی تغییرات تحت قرارداد شوستر، ببینید که علامت قبل از ضرب ضربدر از مثبت به منفی برگردانده شده است.

در نهایت، فرمول تبدیل یک کواترنیون به یک ماتریس چرخشی به صورت تغییر می یابد

{displaystyle {begin{aligned}mathbf {R} _{alt}&=mathbf {I} mathbin {color {red}mathbf {-} } 2q_{r}[mathbf {v} ] _{times }+2[mathbf {v} ]_{times }^{2}qquad {text{(کنوانسیون جایگزین، استفاده ممنوع!)}}&={begin{bmatrix}1 -2s(q_{j}^{2}+q_{k}^{2})&2(q_{i}q_{j}+q_{k}q_{r})&2(q_{i}q_{k }-q_{j}q_{r})2(q_{i}q_{j}-q_{k}q_{r})&1-2s(q_{i}^{2}+q_{k} ^{2})&2(q_{j}q_{k}+q_{i}q_{r})2(q_{i}q_{k}+q_{j}q_{r})&2(q_ {j}q_{k}-q_{i}q_{r})&1-2s(q_{i}^{2}+q_{j}^{2})end{bmatrix}}end{تراز شده} }}

که دقیقاً جابجایی ماتریس چرخشی است که تحت قرارداد سنتی تبدیل شده است.

برنامه های نرم افزاری طبق قرارداد مورد استفاده [ ویرایش ]

جدول زیر برنامه ها را بر اساس پایبندی آنها به یکی از کنوانسیون های کواترنیون گروه بندی می کند: [12]

قرارداد ضرب همیلتونقرارداد ضرب شوستر
  • کتابخانه ریاضی مایکروسافت DirectX

در حالی که استفاده از هر یک از این دو قرارداد بر قابلیت یا صحت برنامه های ایجاد شده تأثیر نمی گذارد، نویسندگان [12] استدلال کردند که کنوانسیون شوستر باید کنار گذاشته شود زیرا از قرارداد ضرب کواترنیون بسیار قدیمی تر همیلتون خارج می شود و ممکن است هرگز توسط همیلتون پذیرفته نشود. حوزه های ریاضی یا فیزیک نظری.

مقایسه با سایر نمایش های چرخش [ ویرایش ]

مزایای کواترنیون [ ویرایش ]

نمایش یک چرخش به عنوان یک کواترنیون (4 عدد) فشرده تر از نمایش به عنوان یک ماتریس متعامد (9 عدد) است. علاوه بر این، برای یک محور و زاویه معین، می توان به راحتی ربع مربوطه را ساخت و برعکس، برای یک ربع معین به راحتی می توان محور و زاویه را خواند. هر دوی اینها با ماتریس ها یا زوایای اویلر بسیار سخت تر هستند .

در بازی های ویدیویی و سایر برنامه ها، شخص اغلب به "چرخش های روان" علاقه مند است، به این معنی که صحنه باید به آرامی بچرخد و نه در یک مرحله. این را می توان با انتخاب یک منحنی مانند درون یابی خطی کروی در چهارتایی ها انجام داد که یک نقطه پایانی تبدیل همانی 1 (یا برخی چرخش اولیه دیگر) و دیگری چرخش نهایی مورد نظر است. این با سایر نمایش‌های چرخش مشکل‌سازتر است.

هنگام نوشتن چندین چرخش در رایانه، خطاهای گرد کردن لزوماً جمع می شوند. یک کواترنیون که کمی خاموش است، همچنان نشان دهنده چرخش پس از نرمال شدن است: ماتریسی که کمی خاموش است ممکن است دیگر متعامد نباشد و تبدیل آن به یک ماتریس متعامد مناسب دشوارتر است.

کواترنیون‌ها همچنین از پدیده‌ای به نام قفل گیمبال اجتناب می‌کنند که می‌تواند زمانی ایجاد شود که، برای مثال در سیستم‌های چرخشی pitch/yaw/roll ، گام 90 درجه به بالا یا پایین می‌چرخد، به طوری که انحراف و چرخش با حرکت مشابهی مطابقت دارند، و درجه‌ای از آزادی چرخش از بین رفته است. به عنوان مثال، در یک سیستم ناوبری اینرسی هوافضا مبتنی بر گیمبال ، اگر هواپیما در یک شیرجه یا صعود شیب دار باشد، این می تواند نتایج فاجعه باری داشته باشد.

تبدیل به و از نمایش ماتریس [ ویرایش ]

از یک کواترنیون به یک ماتریس متعامد [ ویرایش ]

ماتریس متعامد متناظر با یک چرخش توسط چهارتایی واحد z = a + b i + c j + d k (با | z | = 1   ) هنگام پس از ضرب با بردار ستونی با

{displaystyle R={begin{pmatrix}a^{2}+b^{2}-c^{2}-d^{2}&2bc-2ad&2bd+2ac2bc+2ad&a^{2}-b ^{2}+c^{2}-d^{2}&2cd-2ab2bd-2ac&2cd+2ab&a^{2}-b^{2}-c^{2}+d^{2} end{pmatrix}}.}

این ماتریس چرخش بر روی بردار w as استفاده می شود{displaystyle w_{text{rotated}}=Rcdot w}. نمایش کواترنیونی این چرخش به صورت زیر ارائه می شود:

{displaystyle {begin{bmatrix}0w_{text{rotated}}end{bmatrix}}=z{begin{bmatrix}0wend{bmatrix}}z^{*}، }

جایی کهz^{*}مزدوج کواترنیون استz، داده شده توسطmathbf {z} ^{*}=abmathbf {i} -cmathbf {j} -dmathbf {k}

همچنین، ضرب کواترنیونی به این صورت تعریف می شود (با فرض اینکه a و b چهارتایی هستند، مانند z بالا):

{displaystyle ab=left(a_{0}b_{0}-{vec {a}}cdot {vec {b}};a_{0}{vec {b}}+b_{0} {vec {a}}+{vec {a}}times {vec {b}}راست)}

که در آن ترتیب a ، b مهم است زیرا حاصل ضرب متقاطع دو بردار جابجایی نیست.

یک محاسبه کارآمدتر که در آن کواترنیون نیازی به نرمال سازی واحد ندارد توسط [16] ارائه شده است.

{displaystyle R={begin{pmatrix}1-cc-dd&bc-ad&bd+acc+ad&1-bb-dd&cd-abd-ac&cd+ab&1-bb-ccend{pmatrix}} ،}

که در آن مقادیر میانی زیر تعریف شده است:

{displaystyle {begin{alignedat}{2}& s=2/(acdot a+bcdot b+ccdot c+dcdot d),&{begin{array} {lll}bs=bcdot s,&cs=ccdot s,&ds=dcdot s,ab=acdot bs,&ac=acdot cs,&ad=acdot ds,b =bcdot bs,&bc=bcdot cs,&bd=bcdot ds,cc=ccdot cs,&cd=ccdot ds,&dd=dcdot ds.end{آرایه} }end{alignedat}}}

از یک ماتریس متعامد به یک کواترنیون [ ویرایش ]

هنگام تبدیل یک ماتریس چرخشی به کواترنیون باید مراقب بود، زیرا چندین روش ساده زمانی که ردیابی (مجموع عناصر مورب) ماتریس چرخش صفر یا بسیار کوچک است، تمایل به ناپایداری دارند. برای یک روش پایدار برای تبدیل یک ماتریس متعامد به یک کواترنیون، به ماتریس چرخش #کواترنیون مراجعه کنید.

برازش ربع ها [ ویرایش ]

بخش بالا نحوه بازیابی یک کواترنیون q را از یک ماتریس چرخش 3×3 Q توضیح داد. با این حال، فرض کنید که ماتریس Q داریم که چرخش خالص نیست - برای مثال به دلیل خطاهای گرد کردن - و می‌خواهیم کواترنیون q را پیدا کنیم که به دقت Q را نشان می‌دهد . در آن صورت ما یک ماتریس متقارن 4×4 می سازیم

{displaystyle K={frac {1}{3}}{begin{bmatrix}Q_{xx}-Q_{yy}-Q_{zz}&Q_{yx}+Q_{xy}&Q_{zx}+Q_ {xz}&Q_{zy}-Q_{yz}Q_{yx}+Q_{xy}&Q_{yy}-Q_{xx}-Q_{zz}&Q_{zy}+Q_{yz}&Q_{xz} -Q_{zx}Q_{zx}+Q_{xz}&Q_{zy}+Q_{yz}&Q_{zz}-Q_{xx}-Q_{yy}&Q_{yx}-Q_{xy} Q_{zy}-Q_{yz}&Q_{xz}-Q_{zx}&Q_{yx}-Q_{xy}&Q_{xx}+Q_{yy}+Q_{zz}end{bmatrix}}،}

و بردار ویژه ( x ,  y ,  z ,  w ) مربوط به بزرگترین مقدار ویژه را پیدا کنید (این مقدار 1 خواهد بود اگر و فقط اگر Q یک چرخش خالص باشد). کواترنیون به دست آمده با نزدیکترین چرخش به ماتریس اصلی Q مطابقت دارد [ مشکوک - بحث ] . [17]

مقایسه عملکرد [ ویرایش ]

این بخش مفاهیم عملکرد استفاده از کواترنیون ها در مقابل روش های دیگر (محور/زاویه یا ماتریس های چرخشی) برای انجام چرخش های سه بعدی را مورد بحث قرار می دهد.

نتایج [ ویرایش ]

فقط سه تا از اجزای کواترنیون مستقل هستند، زیرا یک چرخش با یک کواترنیون واحد نشان داده می شود. برای محاسبات بیشتر، معمولاً به هر چهار عنصر نیاز است، بنابراین همه محاسبات هزینه اضافی ناشی از بازیابی جزء چهارم را متحمل خواهند شد. به همین ترتیب، محور زاویه را می توان با ضرب جهت واحد در زاویه (یا تابعی از آن) در یک بردار سه جزیی ذخیره کرد، اما این هزینه محاسباتی اضافی در هنگام استفاده از آن برای محاسبات دارد.

مقایسه عملکرد عملیات زنجیر چرخشی
روش# ضرب می شود# اضافه/ تفریقکل عملیات
ماتریس های چرخشی271845
کواترنیون ها161228
مقایسه عملکرد عملیات چرخش برداری [18] [19]
روش# ضرب می شود# اضافه/ تفریق# گناه/کوشکل عملیات
ماتریس چرخش96015
کواترنیون ها *بدون ماتریس میانی1515030
با ماتریس میانی2118039
محور - زاویهبدون ماتریس میانی1813230 + 3
با ماتریس میانی2116237 + 2

* کواترنیون ها را می توان به طور ضمنی به یک ماتریس چرخشی تبدیل کرد (12 ضرب و 12 جمع/ تفریق)، که هزینه چرخش بردارهای زیر را با روش ماتریس چرخشی یکسان می کند.

روش های مورد استفاده [ ویرایش ]

سه رویکرد اساسی برای چرخش بردار v → وجود دارد :

  1. حاصلضرب ماتریس یک ماتریس چرخشی 3 × 3 R و ماتریس ستون اصلی 3 × 1 که نشان دهنده v → است را محاسبه کنید. این به 3 × (3 ضرب + 2 جمع) = 9 ضرب و 6 جمع نیاز دارد که کارآمدترین روش برای چرخش یک بردار است.
  2. یک چرخش را می توان با یک کواترنیون طول واحد q = ( w ,  r → ) با قسمت اسکالر (حقیقی) w و قسمت برداری (خیالی) r → نشان داد. چرخش را می توان از طریق فرمول به بردار 3 بعدی v → اعمال کرد{vec {v}}_{text{new}}={vec {v}}+2{vec {r}}times ({vec {r}}times {vec {v} }+w{vec {v}}). این فقط به 15 ضرب و 15 جمع برای ارزیابی نیاز دارد (یا 18 ضرب و 12 جمع اگر ضریب 2 از طریق ضرب انجام شود). به علامت کواترنیون اعمال می شود. این نتیجه همان فرمول کم کارآمد اما فشرده‌تر ضرب کواترنیون است{vec {v}}_{text{new}}=q{vec {v}}q^{-1}.
  3. از فرمول زاویه/محور برای تبدیل یک زاویه/محور به یک ماتریس چرخشی R استفاده کنید و سپس با یک بردار ضرب کنید، یا به طور مشابه، از یک فرمول برای تبدیل نماد کواترنیون به ماتریس چرخشی و سپس ضرب در یک بردار استفاده کنید. تبدیل زاویه/محور به R 12 ضرب، 2 فراخوانی تابع (sin، cos) و 10 جمع/تفریق هزینه دارد. از مورد 1، چرخش با استفاده از R ، 9 ضرب و 6 جمع اضافی برای مجموع 21 ضرب، 16 جمع/ تفریق، و 2 فراخوانی تابع (sin، cos) اضافه می کند. تبدیل یک کواترنیون به R 12 ضرب و 12 جمع / تفریق هزینه دارد. از مورد 1، چرخش با استفاده از R9 ضرب و 6 جمع اضافی برای مجموع 21 ضرب و 18 جمع / تفریق اضافه می کند.
مقایسه عملکرد n عملیات چرخشی بردار
روش# ضرب می شود# اضافه/ تفریق# گناه/کوشکل عملیات
ماتریس چرخش9 n6 n015 n
کواترنیون ها *بدون ماتریس میانی15 n15 n030 n
با ماتریس میانی9 n + 126 n + 12015 n + 24
محور - زاویهبدون ماتریس میانی18 n12 n + 1230 n + 3
با ماتریس میانی9 n + 126 n + 10215 n + 24

جفت کواترنیون های واحد به عنوان چرخش در فضای 4 بعدی [ ویرایش ]

یک جفت کواترنیون واحد z l و z r می توانند هر چرخشی را در فضای 4 بعدی نشان دهند. با توجه به یک بردار چهاربعدی v → و با فرض اینکه یک بردار چهار بعدی است، می‌توانیم بردار v را به این صورت بچرخانیم :

{displaystyle fleft({vec {v}}right)=mathbf {z} _{rm {l}}{vec {v}}mathbf {z} _{rm {r} }={begin{pmatrix}a_{rm {l}}&-b_{rm {l}}&-c_{rm {l}}&-d_{rm {l}}_{ rm {l}}&a_{rm {l}}&-d_{rm {l}}&c_{rm {l}}c_{rm {l}}&d_{rm {l}} &a_{rm {l}}&-b_{rm {l}}d_{rm {l}}&-c_{rm {l}}&b_{rm {l}}&a_{rm {l}}end{pmatrix}}{begin{pmatrix}wxyzend{pmatrix}}{begin{pmatrix}a_{rm {r}}&-b_{ rm {r}}&-c_{rm {r}}&-d_{rm {r}}_{rm {r}}&a_{rm {r}}&d_{rm {r }}&-c_{rm {r}}c_{rm {r}}&-d_{rm {r}}&a_{rm {r}}&b_{rm {r}} d_{rm {r}}&c_{rm {r}}&-b_{rm {r}}&a_{rm {r}} end{pmatrix}}.}

جفت ماتریس نشان دهنده چرخش ℝ 4 است. توجه داشته باشید که از زمان(mathbf {z} _{rm {l}}{vec {v}})mathbf {z} _{rm {r}}=mathbf {z} _{rm {l}}( {vec {v}}mathbf {z} _{rm {r}})، دو ماتریس باید رفت و آمد داشته باشند. بنابراین، دو زیر گروه رفت و آمد از گروه چرخش های چهار بعدی وجود دارد. چرخش های چهار بعدی دلخواه 6 درجه آزادی دارند. هر ماتریس نشان دهنده 3 درجه از آن 6 درجه آزادی است.

از آنجایی که مولدهای چرخش های چهار بعدی را می توان با جفت کواترنیون ها (به شرح زیر) نشان داد، تمام چرخش های چهار بعدی را نیز می توان نشان داد.

{displaystyle {begin{aligned}mathbf {z} _{rm {l}}{vec {v}}mathbf {z} _{rm {r}}&={begin{pmatrix} 1&-dt_{ab}&-dt_{ac}&-dt_{ad}dt_{ab}&1&-dt_{bc}&-dt_{bd}dt_{ac}&dt_{bc}&1&-dt_{ cd}dt_{ad}&dt_{bd}&dt_{cd}&1end{pmatrix}}{begin{pmatrix}wxyzend{pmatrix}}[3pt] mathbf {z} _{rm {l}}&=1+{dt_{ab}+dt_{cd} over 2}i+{dt_{ac}-dt_{bd} over 2}j+{dt_{ ad}+dt_{bc} over 2}k[3pt]mathbf {z} _{rm {r}}&=1+{dt_{ab}-dt_{cd} over 2}i+{ dt_{ac}+dt_{bd} over 2}j+{dt_{ad}-dt_{bc} over 2}kend{تراز شده}}}

همچنین ببینید [ ویرایش ]

منبع

​https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation

ریاضیات...
ما را در سایت ریاضیات دنبال می کنید

برچسب : نویسنده : 9math1342d بازدید : 502 تاريخ : شنبه 15 بهمن 1401 ساعت: 21:44