平面向量及空間向量間角度的計算

2021-10-11 10:25:17 字數 1201 閱讀 2128

如果根據斜率什麼的判斷可能會涉及到對斜率計算結果精確度的判斷,這就很麻煩,所以並不推薦用斜率計算

更推薦的是使用向量的關係;

假設向量a(a1,a2) 向量b(b1,b2)

平行:共線:a1*b1=a2*b2 ,這裡就不需要擔心計算斜率帶來的精度的問題了

相交(則計算角度):

**實現:如下文貼出的空間向量計算的實現

平行:共線:

相交(則計算角度):

異面:**:利用eigen庫計算兩個向量的旋轉角以及旋轉矩陣

**中設定的旋轉軸是z軸法向量

但是光計算出旋轉矩陣還不夠,還需要計算出平移矩陣,這樣就能模擬出以自身作為旋轉的中心旋轉的效果了。這部分在**中是通過計算旋轉前後點雲中心點的平移來實現的。

那麼可能會有人問為什麼不直接計算該點雲的中心軸,直接以自身為中心進行旋轉呢,關於這個方法,暫時並不知道如何去做。

//求兩個向量間的旋轉角angle(點積)

double tem = vecbefore.dot(vecafter);//分子

//cout << vecbefore<(3, 3) << tra(0, 0), tra(0, 1), tra(0, 2), tra(1, 0), tra(1, 1), tra(1, 2), tra(2, 0), tra(2, 1), tra(2, 2));

mat pointcentertran = h * pointcenter;

//cout << h << endl;

//cout << pointcentertran << endl;

float x_ = pointcenter.at(0, 0) - pointcentertran.at(0, 0);

float y_ = pointcenter.at(1, 0) - pointcentertran.at(1, 0);

float z_ = pointcenter.at(2, 0) - pointcentertran.at(2, 0);

transform_2.translation() << x_, y_, z_;

transform_2.rotate(eigen::angleaxisf(ang, eigen::vector3f::unitz()));

// 可以使用 transform_1 或 transform_2; t它們是一樣的

tra = transform_2;

通過平面向量角度認知世界

通過這幾天對平面向量的研究,我是越來越有興趣了,因為平面向量讓我開拓眼界,給我乙個新的認知角度來看待世界,問題是最好的老師 我講通過自己提出問題,來進行解決和總結,讓自己對平面認識深刻和更好利用。一 抽象能力 抽象是從眾多的事物中抽取出共同的 本質性的特徵而捨棄其非本質的特徵.例如蘋果 香蕉 生梨 ...

演算法 C 計算向量的角度

c 語言裡 double atan2 double y,double x 返回的是原點至點 x,y 的方位角,即與 x 軸的夾角。也可以理解為複數 x yi 的輻角。返回值的單位為弧度,取值範圍為 excel 裡 atan2 x,y 返回的是原點至點 x,y 的方位角。返回值的單位為弧度,取值範圍為...

空間向量繞任一向量旋轉計算

假定向量p繞單位向量a旋轉角度 得到新的向量p 則 p p cos a p sin a a p 1 cos 其中a為單位向量,旋轉角度 為逆時針方向旋轉的角度。假定向量p的座標為 px,py,pz 向量a的座標為 ax,by,cz 且 a p ay pz az py,ax pz az px ax p...