- Hands-On C++ Game Animation Programming
- Gabor Szauer
- 218字
- 2021-06-30 14:45:51
The angle between vectors
If two vectors are of unit length, the angle between them is the cosine of their dot product:

If the two vectors are not normalized, the dot product needs to be divided by the product of the length of both vectors:

To find the actual angle, not just the cosine of it, we need to take the inverse of the cosine on both sides, which is the arccosine function:

Implement the angle function in vec3.cpp. Don't forget to add the function declaration to vec3.h:
float angle(const vec3 &l, const vec3 &r) {
float sqMagL = l.x * l.x + l.y * l.y + l.z * l.z;
float sqMagR = r.x * r.x + r.y * r.y + r.z * r.z;
if (sqMagL<VEC3_EPSILON || sqMagR<VEC3_EPSILON) {
return 0.0f;
}
float dot = l.x * r.x + l.y * r.y + l.z * r.z;
float len = sqrtf(sqMagL) * sqrtf(sqMagR);
return acosf(dot / len);
}
Important note:
The acosf function returns angles in radians. To convert radians to degrees, multiply by 57.2958f. To convert degrees to radians, multiply by 0.0174533f.
- 流量的秘密:Google Analytics網站分析與優化技巧(第2版)
- 三維圖形化C++趣味編程
- 微信小程序開發解析
- Kali Linux Wireless Penetration Testing Beginner's Guide(Third Edition)
- PySide GUI Application Development(Second Edition)
- Python算法從菜鳥到達人
- Flutter跨平臺開發入門與實戰
- SQL基礎教程(第2版)
- 從零開始學C#
- .NET Standard 2.0 Cookbook
- 多模態數據分析:AGI時代的數據分析方法與實踐
- Python程序設計開發寶典
- Greenplum構建實時數據倉庫實踐
- Using Yocto Project with BeagleBone Black
- Parallel Programming with Python