벡터 외적을 계산하는 방법문서에서 * 연산자는 외적을 수행하고 ;*는 내적을 수행하는 것처럼 보입니다. 다음과 같이 알려진 벡터 쌍에 수직인 벡터를 결정하기 위해 외적을 사용하고 싶습니다.
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)와 같아야 합니다. 벡터 외적에 대한 단순화된 공식으로 이것을 수동으로 구현할 수 있지만 행렬 곱셈과 함께 작동하도록 이것을 다르게 형식화하는 방법을 아는 사람이 있습니까?
Re: 벡터 외적을 계산하는 방법감사합니다 cwillden, 이것은 본질적으로 내가 구현한 것입니다. 3D 벡터에만 관심이 있기 때문에 작동하지만 이것이 내장 기능이 아니라는 점에 놀랐습니다. 다른 사람이 그런 방법을 알고 있는지 확인하기 위해 잠시 열어 둡니다.
Re: 벡터 외적을 계산하는 방법누군가 이 작업을 수행하는 현명한 방법을 생각해 냈으면 합니다. det() 함수는 밀접하게 관련되어 있지만 det(3x3 행렬)을 사용하여 스칼라 값 이상을 얻는 방법을 이해하지 못합니다. det(2x2 sub-matrix)를 세 번 사용할 수 있다고 생각합니다. 엑시 접근 방식이 더 간단하고 빠릅니다.
나는 3D 장면의 표면 법선에 사용합니다. 일부 JSL이 있습니다. https://community.jmp.com/t5/Uncharted/Custom-Visualization/ba-p/191559 .
Re: 벡터 외적을 계산하는 방법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);