- Hands-On C++ Game Animation Programming
- Gabor Szauer
- 292字
- 2021-06-30 14:45:51
Normalizing vectors
A vector with a length of 1 is called a normal vector (or unit vector). Generally, unit vectors are used to represent a direction without a magnitude. The dot product of two unit vectors will always fall in the -1 to 1 range.
Aside from the 0 vector, any vector can be normalized by scaling the vector by the inverse of its length:
- Implement the normalize function in vec3.cpp. Don't forget to add the function declaration to vec3.h:
void normalize(vec3 &v) {
float lenSq = v.x * v.x + v.y * v.y + v.z * v.z;
if (lenSq < VEC3_EPSILON) { return; }
float invLen = 1.0f / sqrtf(lenSq);
v.x *= invLen;
v.y *= invLen;
v.z *= invLen;
}
- Implement the normalized function in vec3.cpp. Don't forget to add the function declaration to vec3.h:
vec3 normalized(const vec3 &v) {
float lenSq = v.x * v.x + v.y * v.y + v.z * v.z;
if (lenSq < VEC3_EPSILON) { return v; }
float invLen = 1.0f / sqrtf(lenSq);
return vec3(
v.x * invLen,
v.y * invLen,
v.z * invLen
);
}
The normalize function takes a reference to a vector and normalizes it in place. The normalized function, on the other hand, takes a constant reference and does not modify the input vector. Instead, it returns a new vector.
- Learning ASP.NET Core 2.0
- 精通Linux(第2版)
- Learning DHTMLX Suite UI
- OpenStack Orchestration
- ExtJS高級程序設計
- PySide 6/PyQt 6快速開發與實戰
- 計算機應用基礎教程(Windows 7+Office 2010)
- Advanced UFT 12 for Test Engineers Cookbook
- Learning Grunt
- Modernizing Legacy Applications in PHP
- C++服務器開發精髓
- Socket.IO Cookbook
- Mastering PostgreSQL 11(Second Edition)
- Lync Server Cookbook
- 深度學習的數學:使用Python語言