1. 程式人生 > >unity 由兩個向量求夾角

unity 由兩個向量求夾角

light normal 返回 rom 得到 orm 向量 方向 n)

1.

float angle = Vector3.Angle (fromVector, toVector); //求出兩向量之間的夾角  
Vector3 normal = Vector3.Cross (fromVector,toVector);//叉乘求出法線向量  
angle *= Mathf.Sign (Vector3.Dot(normal,upVector));  //求法線向量與物體上方向向量點乘,結果為1或-1,修正旋轉方向  

2.

Vector3 velocity = Quaternion.Inverse (transform.rotation)*destinationVector; //對目標向量進行反向旋轉,得到的新向量與z軸的夾角即為目標向量與當前物體方向的夾角          
float angle = Mathf.Atan2 (velocity.x,velocity.z) * Mathf.Rad2Deg; //返回tan值為x/z的角的弧度,再轉化為度數。  

3.

數學法:已知a,b兩個向量

cosθ=X; (X=(a*b)/(|a|*|b|))

然後求θ=arccosX c#裏是Mathf.Acos(X);

unity 由兩個向量求夾角