- 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.
- 程序員面試算法寶典
- Instant Zepto.js
- C語言程序設計實訓教程
- Drupal 8 Module Development
- Visual Basic程序設計
- 機器學習與R語言實戰(zhàn)
- Scala Reactive Programming
- Building Wireless Sensor Networks Using Arduino
- 21天學通C++(第5版)
- Hands-On Full Stack Development with Spring Boot 2.0 and React
- Android嵌入式系統(tǒng)程序開發(fā):基于Cortex-A8(第2版)
- Image Processing with ImageJ
- Arduino可穿戴設備開發(fā)
- Python計算機視覺和自然語言處理
- 高性能PHP 7