三角形法向量與向量乘法

2021-06-07 18:48:50 字數 1005 閱讀 6408

伸出右手,使拇指與四指垂直,四指指向a的方向,彎向b的方向,則大拇指指的方向就是a*b的方向

數量積

數量積也叫點積,它是向量與向量的乘積,其結果為乙個標量。幾何上,數量積可以定義如下:

設數量積被廣泛應用於物理中,如做功就是用力的向量點乘位移的向量,即

向量積也叫叉積,向量積,它也是向量與向量的乘積,不過需要注意的是,它的結果是個向量,但由於其結果是由座標系確定,所以其結果被稱為偽向量。

設有向量

則其向量積的矩陣表示式可寫作:

例項:我們需要找到三角形的法線(normal)。它是乙個向量,是三角形平面上的一條垂線,如圖

法線是到達三角形表面的一條垂線

我們可以通過該平面的兩個向量計算出它們的外積(cross product)從而求出這條法線。兩個向量的積是一條垂直於這兩條向量的新向量。我們將使用的這兩條向量是點 a和b,點 b和c 之間的連線。每個向量都用有帶有 x, y, z的 object 持有。

var ab:object = new object();

ab.x = pointa.x - pointb.x;

ab.y = pointa.y - pointb.y;

ab.z = pointa.z - pointb.z;

var bc:object = new object();

bc.x = pointb.x - pointc.x;

bc.y = pointb.y - pointc.y;

bc.z = pointb.z - pointc.z;

然後計算法線,即另乙個向量。求該物件的法向量(norm)。下面的**用於計算向量ab和bc的外積:

var norm:object = new object();

norm.x = (ab.y * bc.z) - (ab.z * bc.y);

norm.y = -((ab.x * bc.z) - (ab.z * bc.x));

norm.z = (ab.x * bc.y) - (ab.y * bc.x);

向量法判斷圓與三角形相交

利用向量法避開討論正負的問題,大意就是給三角形判斷與圓是否相交的問題 struct l inline double dis double x,double y,double m,double n,double o,double p 判斷可能的三種情況,大於1為遠離點,小於0為近點,否則為中間點 us...

圓與三角形(圓與三角形是否相交)

給出圓的圓心和半徑,以及三角形的三個頂點,問圓同三角形是否相交。相交輸出 yes 否則輸出 no 三角形的面積大於0 第1行 乙個數t,表示輸入的測試數量 1 t 10000 之後每4行用來描述一組測試資料。4 1 三個數,前兩個數為圓心的座標xc,yc,第3個數為圓的半徑r。3000 xc,yc ...

圓與三角形

1298 圓與三角形 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 給出圓的圓心和半徑,以及三角形的三個頂點,問圓同三角形是否相交。相交輸出 yes 否則輸出 no 三角形的面積大於0 第1行 乙個數t,表示輸入的測試數量 1 t 10000 之後每4行用來描述一組測試...