Function rotationBetweenVectors
Setup an orientation matrix that performs rotation between two vectors
Currently this is just a shortcut for dlib.math.quaternion.rotationBetween
Example
bool isAlmostZero4(Vector4f v)
{
float e = 0.002f;
return abs(v .x) < e &&
abs(v .y) < e &&
abs(v .z) < e &&
abs(v .w) < e;
}
// build ModelView (World to Camera)
vec3 center = vec3(0.0f, 0.0f, 0.0f);
vec3 eye = center + vec3(0.0f, 1.0f, 1.0f);
vec3 up = vec3(0.0f, -0.707f, 0.707f);
Matrix4f modelView = lookAtMatrix(eye, center, up);
// build Projection (Camera to Eye)
Matrix4f projection = perspectiveMatrix(45.0f, 16.0f / 9.0f, 1.0f, 100.0f);
// compose into one transformation
Matrix4f projectionModelView = projection * modelView;
vec4 positionInWorld = vec4(0.0f, 0.0f, 0.0f, 1.0f);
vec4 transformed1 =
positionInWorld * projectionModelView;
vec4 transformed2 =
(positionInWorld * modelView) * projection;
assert(isAlmostZero4(transformed1 - transformed2));