- Hands-On C++ Game Animation Programming
- Gabor Szauer
- 210字
- 2021-06-30 14:45:51
Vector reflection
Vector reflection can mean one of two things: a mirror-like reflection or a bounce-like reflection. The following figure shows the different types of reflections:

Figure 2.8: A comparison of the mirror and bounce reflections
The bounce reflection is more useful and intuitive than the mirror reflection. To make a bounce projection work, project vector A onto vector B. This will yield a vector that points in the opposite direction to the reflection. Negate this projection and subtract it twice from vector A. The following figure demonstrates this:

Figure 2.9: Visualizing a bounce reflection
Implement the reflect function in vec3.cpp. Don't forget to add the function declaration to vec3.h:
vec3 reflect(const vec3 &a, const vec3 &b) {
float magBSq = len(b);
if (magBSq < VEC3_EPSILON) {
return vec3();
}
float scale = dot(a, b) / magBSq;
vec3 proj2 = b * (scale * 2);
return a - proj2;
}
Vector reflection is useful for physics and AI. We won't need to use reflection for animation, but it's good to have the function implemented in case it is needed.
- ExtGWT Rich Internet Application Cookbook
- Python快樂編程:人工智能深度學習基礎
- Java應用與實戰
- 微服務與事件驅動架構
- CentOS 7 Server Deployment Cookbook
- Python高級編程
- 匯編語言程序設計(第2版)
- Mastering OpenCV 4
- ASP.NET 3.5程序設計與項目實踐
- 深入分布式緩存:從原理到實踐
- Mastering Elasticsearch(Second Edition)
- Java Web從入門到精通(第3版)
- Building Slack Bots
- Python Digital Forensics Cookbook
- 體驗之道:從需求到實踐的用戶體驗實戰