說一個對象的方向是由一個四元數表示的。 如果我想旋轉該對象,我只需將四元數與旋轉四元數相乘即可。如何旋轉由四元數表示的對象集?
object.q = q_rotation*(object.q)
然後對於由由一組較小的對象中的一個對象。我如何旋轉它?
class Object
{
public:
std::vector<Object> part;
Point centre; //Point is basically double x, y, z
Quaternion q;
void RotateBy(Quaternion q_rotation);
};
只是說這個對象有兩部分的。每個部分可以有自己的中心和q,並且它們相對於整個空間(不是相對於主要對象的中心)。
然後現在我想旋轉對象,並且它的所有部分都應該旋轉並更新到它們的新中心和q。零件將相對於主體的中心旋轉。
我該怎麼做?我發現了許多鏈接,顯示瞭如何使用轉換矩陣做到這一點。但有沒有辦法直接與四元數做到這一點?
也許,換句話說,如何旋轉一個四元數的原點偏移?
謝謝你的幫助!
此代碼可能有助於乘以四元數。 http://stackoverflow.com/questions/10781033/eficient-c-quaternion-multiplication-using-cvmat – 2012-05-28 08:57:28