如何計算向量叉積從文檔看來 * 運算符將執行叉積,而 ;* 將執行點積。 我想使用叉積來確定垂直於一對已知向量的向量,如下所示:
p1 = [1, 2, 4];
p2 = [2, 1, 4];
p3 = [2, 2, 4];
v1 = p3 - p1;
v2 = p2 - p1;
xProd = v1*v2;
3 個點定義一個平面,從這些點獲取的兩個向量做同樣的事情,叉積應該給出該平面的法向量。 問題似乎是相乘的兩個矩陣(v1 和 v2)的維數不一致——nRows(v1) 應該等於 nCols(v2)。 我可以用一個簡化的矢量叉積公式手動實現這個,但是有誰知道如何以不同的方式格式化它以使用矩陣乘法?
回复:如何計算向量叉積謝謝 cwillden,這基本上就是我已經實現的。 它確實對我有用,因為我只關心 3D 矢量,但我很驚訝這不是內置函數。 我打算把這個打開一點,看看是否有其他人知道這種方法。
回复:如何計算向量叉積我希望有人想出一個聰明的方法來做到這一點。 det() 函數密切相關,但我不明白如何使用 det(3x3 矩陣) 來獲取標量值以外的值。 我認為你可以使用 det(2x2 sub-matrix) 三次,但我認為直截了當木木方法更簡單,同樣快速。
我將它用於 3D 場景中的表面法線,其中有一些 JSL https://community.jmp.com/t5/Uncharted/Custom-Visualization/ba-p/191559 .
回复:如何計算向量叉積如果您只處理 3x1(或 1x3)向量,那麼我認為計算效率或優雅並不是太重要。這就足夠了嗎?
cross_prod = function({v1, v2},
matrix({v1[2]*v2[3] - v1[3]*v2[2], v1[1]*v2[3] - v1[3]*v2[1], v1[1]*v2[2] - v1[2]*v2[1]});
);
cross_prod(v1, v2);