Unity_数学_点乘和叉乘的应用
来源:互联网 发布:python 时间加减 编辑:程序博客网 时间:2024/05/01 02:35
1. 点乘
1.理论和推导
术语点乘来自A·B中的点号(点乘· 叉乘* )向量点乘对应分量乘机的和,它结果是一个标量它的公式
A·B=Ax*Bx+AyBy+AzBz例如(3,1,-1)·(7,2,1)=3*7+1*2+(-1)*1=22
看下图就好。感受手写比打字方便多了呀!!!!
2.项目中的应用
点乘结果描述的是两个向量之间的相识度,点乘的结果越大向量约靠近,所以完全可以用点乘的结果来确定向量A
和向量B之间的夹角。 用VectorAPI得到cos值,然后用Mathf类算出角度
查看API :Vector 点乘API
点乘的结果除了可以确认向量A和向量B之间的夹角大小之外,还可以用来求向量的投影。其原理就是把
向量分解成平行和垂直的其他两个向量。这个自行想象吧
2. 叉乘
1.理论
和点乘一样,叉乘的术语是因为A x B中的x这个符号,点乘得到的结果是一个标量,儿叉乘得到的结果是一个向量
又一次打字太难受了,还是写方便很多,你直接看图推导公式吧
这段推导的下面三行忽略吧。我想试着推导下点乘和叉乘的关系的。 我也是傻逼哦
2.项目中的应用
看了推导,你大概都能知道叉乘能做什么了把,AB叉乘的结果会向量C垂直向量AB, 然后你通过判断C的正负值来判断他们处于方向
白色的向量就是点乘的结果。 查看向量C 的y值 朝上的时候是(0,85.4,0) 向量C朝下的时候 Vector值 (0,-90.54,0)
代码如下
using UnityEngine;using System.Collections;public class CrossTest : MonoBehaviour { public Transform a; public Transform b; public Vector3 _c = Vector3.zero; void Start() { } void Update() { Debug.DrawLine(Vector3.zero, a.position, Color.blue); Debug.DrawLine(Vector3.zero, b.position,Color.red); Debug.DrawLine(Vector3.zero, _c,Color.white); } void OnGUI() { _c = Vector3.Cross(a.position, b.position); //向量a,b的夹角,得到的值为弧度,我们将其转换为角度,便于查看! float angle = Mathf.Asin(Vector3.Distance(Vector3.zero, Vector3.Cross(a.position.normalized, b.position.normalized))) * Mathf.Rad2Deg; GUILayout.Label("向量a,b的夹角为:" + angle); }}
总结一句话:点乘可以判断向量之间的夹角,叉乘可以判断向量之间的方向在顺时针还是逆时针方向
0 0
- Unity_数学_点乘和叉乘的应用
- unity-点乘和叉乘的应用
- Unity3D 中 点乘和叉乘的应用
- unity-点乘和叉乘的应用
- 向量的点乘和叉乘
- 向量的点乘和叉乘
- 向量的点乘和叉乘
- 点乘和叉乘的区别
- 向量的点乘和叉乘
- 向量的点乘和叉乘
- 点乘和叉乘的区别
- 向量的点乘和叉乘
- 点乘和叉乘
- 点乘和叉乘
- 点乘和叉乘
- 点乘和叉乘
- 向量的点乘和叉乘在游戏中的应用
- Unity 点乘和叉乘的原理和使用
- 太空飞行计划问题(最大流)
- PAT乙级—1045. 快速排序(25)-native
- 12_Flink Streaming cluster
- 资金定投
- (二)javascript的数据类型
- Unity_数学_点乘和叉乘的应用
- Linux的运行级别初探
- 《教父1》观后感——第1遍
- 异常处理机制
- oracle如何对表同一个表重复的数据进行删除
- 引用外部类的对象
- 设计模式(1)——工厂模式
- sleep和wait有什么区别
- 【知乎回答】电脑是怎么通过ip找到对应的终端的?