亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一種無需與極坐標相互轉換即可旋轉矢量的方法

一種無需與極坐標相互轉換即可旋轉矢量的方法

月關寶盒 2023-09-19 17:34:52
一種方法是:將原始向量轉換為極坐標按設定量旋轉轉換回笛卡爾坐標系是否有一種更干凈的方法,或者不需要進行這些轉換的方法
查看完整描述

2 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

是的,將 x 和 y 乘以角度的 sin 和 cos。這就是我在 C++ 中的做法:


class Rotate2D

{

public:

    float cosA, sinA;


    Rotate2D(const float radRot, const float scale=1.0f)

        : cosA(scale*cos(radRot)), sinA(scale*sin(radRot)){};


    template<typename T>

    inline Point2DF map(const T &pt) const

    {

        return Point2DF(cosA*pt.cx() - sinA*pt.cy(),

                     sinA*pt.cx() + cosA*pt.cy());

    }

};

此代碼在 2D 中旋轉并可選擇縮放。在 3D 中也是同樣的事情。擴展幾乎是免費的,因此幾乎沒有理由不使用它。


但是,我強烈建議您使用四元數庫來旋轉 3D 點。


查看完整回答
反對 回復 2023-09-19
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

當然有。

對于二維來說,矩陣非常簡單,就是

? ? ? ?| cos A? ?- sin A |

R = |? ? ? ? ? ? ? ? ?|

? ? ? ?| sin A? ? ?cos A |

其中 A 是您想要旋轉向量的角度


一旦你組成了一個這樣的矩陣,將它乘以你的向量,你就會得到向量旋轉量“A”


對于二維,請使用文章開頭的那個,對于更高維度,谷歌是你的朋友。


通過一些調整,您可以將此技術擴展到縮放、移動(平移)和剪切變換。


請注意,二維向量乘以 2x2 矩陣會產生與您必須在方法中概述的相同操作。這是一種更干凈的處理事情的方式。當維數超過 2 時,它會變得更容易。


查看完整回答
反對 回復 2023-09-19
  • 2 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號