差乘积

译自:http://www.lighthouse3d.com/tutorials/maths/vector-cross-product/

 

      两个向量差乘积得到一个特殊的向量,这个向量指向于(就是垂直)两个向量确定的平面。假设向量v1,v2在XZ平面上,假设v1到v2是逆时针方向的话,那么差乘积向量方向向上,反之方向向下。差乘积可以使用于许多方面,光照计算或者计算向量之间的夹角。

 crossproduct

下面的等式展示了计算v1和v2差乘积v的必要步骤。差乘积通常用符号“X”来表示。

v = v1 x v2

    v = [vx,vy,vz] where,

        vx = v1y * v2z - v1z * v2y

        vy = v1z * v2x - v1x * v2z

        vz = v1x * v2y - v1y * v2x

需要注意的是差乘积不符合交换律,事实上它是交换后取反的。下面是差乘积的一些特性:

v1 x v2 = - (v2 x v1)
    k * (v1 x v2) = v1 x (k*v2) = (k*v1) x v2
    v1 x (v2 + v3) = (v1 x v2) + (v1 x v3)

差乘积向量的长度和差乘向量v1,v2的长度,以及它们的夹角sine值成比例关系。

|v| = |v1| |v2| * sin(a)

上面sin里面的a是向量v1,v2的夹角。在下面的公式中,差乘积可以用来计算两个向量夹角的sine值(内积计算两个向量的cosines值)差乘积可以定义成C语言中的宏:

#define crossProduct(a,b,c) \

    (a)[0] = (b)[1] * (c)[2] - (c)[1] * (b)[2]; \
    (a)[1] = (b)[2] * (c)[0] - (c)[2] * (b)[0]; \
    (a)[2] = (b)[0] * (c)[1] - (c)[0] * (b)[1];

转载于:https://www.cnblogs.com/byhj/p/4143850.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值