矩阵和矢量的叉乘推导和简单实用

矩阵和矢量的叉乘推导和简单实用矩阵的叉乘二维矩阵假设 a a1 a2 b b1 b2 aXb a1b2 a2b1 几何意义就是 aXb 是 ab 组成的平行四边形的面积接下来来证明 S a b ab Sin a b bX a b

大家好,欢迎来到IT知识分享网。

手写了一份叉乘的推导

矩阵和矢量的叉乘推导和简单实用

矩阵的叉乘

矩阵和矢量的叉乘推导和简单实用

叉乘的矩阵形式,a向量变成A*  然后乘b向量

二维矩阵

假设a(a1,a2) b(b1,b2) 

aXb = a1b2 – a2b1  几何意义就是 aXb是a b组成的平行四边形的面积

矩阵和矢量的叉乘推导和简单实用

接下来来证明

S(a,b) = ab*Sin<a,b> = b X a = a2b1 – a1b2

Sin<a,b> = Sin(α – β) = SinαCosβ – CosαSinβ = \frac{a2}{a}*\frac{b1}{b} – \frac{a1}{a}*\frac{b2}{b}\frac{a2b1 - a1b2}{ab}

==>>   S(a,b) = a1b2 – a2b1

==>>   S(a,b) = \begin{bmatrix} a1 & a2 \\ b1 & b2 \end{bmatrix} = a1b2 – a2b1

这两个值是相反的, S(a,b) = b X a 

因为 Sin<a,b> = Sin(α – β)   Sin<b,a> = Sin(β – α)    同时也跟矩阵aXb  bXa的右手坐标系有关

三维矩阵

\begin{bmatrix} a11 &a12 &a13 \\ a21&a22 & a23\\ a31 &a32 &a33 \end{bmatrix}  = a11a22a33 + a12a23a31 + a13a21a32 – a11a23a32 – a12a21a33 – a13a22a31

跟上面二阶行列式一样,都是正向对角相乘后的和 减去 反向对角相乘后的和

S(a,b,c) = a X b X c

矩阵和矢量的叉乘推导和简单实用

这就可以来推测Unity里面Vector3的Cross 

 public static Vector3 Cross(Vector3 lhs, Vector3 rhs) { return new Vector3((float) ((double) lhs.y * (double) rhs.z - (double) lhs.z * (double) rhs.y), (float) ((double) lhs.z * (double) rhs.x - (double) lhs.x * (double) rhs.z), (float) ((double) lhs.x * (double) rhs.y - (double) lhs.y * (double) rhs.x)); }

这就是两个矢量的叉乘

所以求向量的叉乘可以转换为求对应矩阵的行列式

应用

左手定则根据叉乘的正负判断 目标在主角的左面还是右面

 public Transform target; public Vector3 temp; void Start () { } void Update () { temp = Vector3.Cross(transform.position,target.position); if (temp.y > 0) { print("在左面"); } else { print("在右边"); } }

矩阵和矢量的叉乘推导和简单实用

欢迎star我的框架 wang-er-s/Framework: a unity mvvm framework, building… (github.com)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/125962.html

(0)
上一篇 2025-09-22 19:00
下一篇 2025-09-22 19:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信