点乘
点乘的结果,是个数字。
(x1,y1,z1)·(x2,y2,z2)=x1x2+y1y2+z1z2
其几何意义为:
a·b=|a||b|·cosθ
移项得到:
cosθ=a/|a|·b/|b|
然后反余弦,就可以求两个向量之间的夹角。
using UnityEngine;
using System.Collections;
public class VectorDemo1 : MonoBehaviour {
public Transform tr1,tr2;
public float angle;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
getAngle ();
}
private void getAngle(){
Debug.DrawLine (Vector3.zero,tr1.position);
Debug.DrawLine (Vector3.zero,tr2.position);
//点乘
float dotRes = Vector3.Dot (tr1.position.normalized,tr2.position.normalized);
//弧度->角度
angle = Mathf.Acos (dotRes) * Mathf.Rad2Deg;
}
}
1.png
2.png
叉乘
叉乘又称叉积或外积。
叉乘的结果,还是个向量,其方向垂直于两个向量组成的面,可以用左手法则判断。
叉乘的现实意义为:假如有a和b两个向量,通过叉乘,可以判断b在a的左边还是右边。
using UnityEngine;
using System.Collections;
public class VectorDemo1 : MonoBehaviour {
public Transform tr1,tr2;
public float y;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
getCross ();
}
private void getCross(){
Debug.DrawLine (Vector3.zero,tr1.position);
Debug.DrawLine (Vector3.zero,tr2.position);
//叉乘
Vector3 crossRes = Vector3.Cross (tr1.position,tr2.position);
y = crossRes.y;//判断y的±
Debug.DrawLine (Vector3.zero,crossRes,Color.red);
}
}
7.gif
注意观察y的值。
网友评论