旋轉矩陣的自驗證c

2021-09-25 18:36:53 字數 1273 閱讀 3866

as you known,旋轉矩陣r,表示的是繞x、y、z軸三個方向的旋轉角度,即,我們常說的:俯仰角、偏航角、橫滾角。

根據座標軸定義的不同及旋轉順序的不同,以先繞z軸再繞y軸再繞x軸旋轉,那麼,最終的選擇矩陣r=rx*ry*rz。

在使用該旋轉矩陣之前,先要根據旋轉矩陣的性質對它進行檢查。(數學知識)

比如:正交矩陣每一列都是單位矩陣,並且兩兩正交。

正交矩陣的逆(inverse)等於正交矩陣的轉置(transpose)。

and so on……

如果求得的值,與cout的「if  = 1」或者「if = 0"相等,則說明求得的r滿足本身的性質。可以進行下一步的驗證。

cout << r.t() << endl;

cout << r.inv() << endl;

cout << "if = 1 ? " << r.t()*(r) << endl;

r[0] = r.at(0, 0);

r[1] = r.at(0, 1);

r[2] = r.at(0, 2);

r[3] = r.at(1, 0);

r[4] = r.at(1, 1);

r[5] = r.at(1, 2);

r[6] = r.at(2, 0);

r[7] = r.at(2, 1);

r[8] = r.at(2, 2);

cout << "if = 1 ? " << (r[2] * r[2] + r[0] * r[0] + r[1] * r[1]) << endl;

cout << "if = 1 ? " << (r[3] * r[3] + r[4] * r[4] + r[5] * r[5]) << endl;

cout << "if = 1 ? " << (r[6] * r[6] + r[7] * r[7] + r[8] * r[8]) << endl;

cout << "if = 0 ? " << (r[0] * r[3] + r[1] * r[4] + r[2] * r[5]) << endl;

cout << "if = 0 ? " << (r[0] * r[6] + r[1] * r[7] + r[2] * r[8]) << endl;

cout << "if = 0 ? " << (r[3] * r[6] + r[4] * r[7] + r[5] * r[8]) << endl;

推到 旋轉矩陣公式 旋轉矩陣公式推導

1.在二維平面中 如下圖所示,在xoyxoy平面中有一向量op x,y top x,y t,旋轉 角後變為向量op x y top x y t。據圖可得 x op cos y op sin x op cos y op sin 經旋轉 角後有 x op cos op cos cos sin sin x...

列印矩陣 旋轉矩陣 矩陣查詢(c )

2 旋轉正方形矩陣 vector方法 後續更新 3 之列印 後續更新 4 矩陣查詢 後續更新 不能想如何進行座標位置變換到下乙個,很難。應該考慮資料狀況,從巨集觀上進行分解。若傳入陣列為二維 int a,且不能確定長和寬。way1 下面方法也能獲取長度 1 int lines sizeof a si...

旋轉矩陣演算法

question 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 void func int n 要求 通過傳入的n,輸出乙個4 4的矩陣,順序如上圖所示.code nxn矩陣 include using namespace std include define max...