首先,从A和B中减去原点:
A = A - origin
B = B - origin
Run Code Online (Sandbox Code Playgroud)
然后,规范化向量:
A = A / ||A||
B = B / ||B||
Run Code Online (Sandbox Code Playgroud)
然后找到A和B的点积:
dot = A . B
Run Code Online (Sandbox Code Playgroud)
然后找到反余弦.这是你的角度:
angle = acos(dot)
Run Code Online (Sandbox Code Playgroud)
(注意结果是弧度.要转换为度数,乘以180除以π.)
以下是使用GLM实现此方法的C++源代码:
float angleBetween(
glm::vec3 a,
glm::vec3 b,
glm::vec3 origin
){
glm::vec3 da=glm::normalize(a-origin);
glm::vec3 db=glm::normalize(b-origin);
return glm::acos(glm::dot(da, db));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6679 次 |
| 最近记录: |