| 97 | |
| 98 | |
| 99 | vec3f cross(const vec3f& u, const vec3f& v) { |
| 100 | vec3f c = { u.y * v.z - u.z * v.y, u.z * v.x - u.x * v.z, u.x * v.y - u.y * v.x }; |
| 101 | float n = sqrtf(c.x * c.x + c.y * c.y + c.z * c.z); |
| 102 | c.x /= n; c.y /= n; c.z /= n; |
| 103 | return c; |
| 104 | } |
| 105 | vec3f lerp(const vec3f& a, const vec3f& b, const float v) { |
| 106 | const float u = 1.0f - v; |
| 107 | return vec3f(v * b.x + u * a.x, v * b.y + u * a.y, v * b.z + u * a.z); |