// repere de camera --- // mat4 esgiLookAt(const vec3 &eye, const vec3 &target, const vec3 &up) { vec3 z = (target - eye).NormalizedSafe(); if (z.Length() == 0.f) z.z = -1.f; vec3 y = up.Normalized(); vec3 x = (z.Cross(y)).Normalized(); y = x.Cross(z); vec4 eyePoint; eyePoint.set(-eye, 1.f); mat4 m; m.I.set(x, 0.f); m.J.set(y, 0.f); m.K.set(-z, 0.f); m.T.set(0.f, 0.f, 0.f, 1.f); m.Transpose(); vec4 eyePrime = m*eyePoint; m.T = eyePrime; return m; }
float Camera::angleBetween(vec3 one, vec3 two) { return 180.0f / 3.14159265f * acos(one.Normalized().Dot(two.Normalized())); }