转自http://blog.163.com/shiliping_007/blog/static/25772011201071744031933/
向量积 a x b = (^n) * |a| * |b| * sin<a, b>, 其中^n是同时垂直于a/b且符合右手定则的单位向量。
若已知向量a = (ax, ay, az), b = (bx, by, bz);
则 a x b = (ay * bz - by * az, az * bx - ax * bz, ax * by - ay * bx);
可以把i, j, k和a,b的坐标分别循环写成一行如下:
i ~~~~ j ~~~~ k ~~~~ i ~~~~ j ...
ax ~~ ay ~~~ az ~~~~ ax ~~~~ ay ...
bx ~~ by ~~~ bz ~~~~ bx ~~~~ by ..
斜向右下方向可以找出三条线分别串起
i-ay-bz, j-az-bx, k-ax-by
斜向左下方向可以找出三条线分别串起
i-az-by, j-ax-bz, k-ay-bx
将每条线中的三个数相乘,(前三条线的和)减去(后三条线的和),就是向量a, b的叉积。
如果向量是二维的(e. g. a = (ax, by) , b = (bx, by) ),那么
a x b = ax * by - ay * bx = |a| * |b| * sin<a, b>
可以用来判断两条线段之间的夹角是顺时针还是逆时针的。