- 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.
- Magento 2 Theme Design(Second Edition)
- Microsoft Dynamics GP 2013 Reporting, Second Edition
- Python Data Analysis Cookbook
- Visual Basic程序設計
- Terraform:多云、混合云環境下實現基礎設施即代碼(第2版)
- Microsoft Azure Storage Essentials
- 從零開始學Linux編程
- Python Essentials
- Vue.js應用測試
- Qt5 C++ GUI Programming Cookbook
- FPGA嵌入式項目開發實戰
- Orchestrating Docker
- 分布式數據庫原理、架構與實踐
- LabVIEW數據采集
- Shopify Application Development