Welcome. In this segment, we are going to see how to use dot and cross products to create an orthonormal coordinate frame which will be useful in many applications.
Orthonormal bases and coordinate frames are important for representing points, positions, locations.
Often there are many different sets of coordinate systems. So not just your single XYZ coordinate systems. In graphics this is very common that you will have a coordinate system associated with the model, you will have a coordinate system associated with the local coordinates, you will have a coordinate system associated with the world, you may even have separate coordinate systems for the head, for the shoulder, for the hands, for the torso, for the legs, for the shoes, so on.
And a very important part is to get all of these different objects in their consistent frame of reference. So a critical issue is transforming between these different coordinate systems. In fact the next 3 lectures deal with the transformations and viewing and the way in which you can use matrices and vectors for that purpose.
So what is a coordinate frame? It's any set of 3 vectors in 3 dimensions, such that the vectors are of unit norm. Such that the vectors are mutually orthogonal to each other. And such that they obey this cross product relationship, which is that w is equal to u cross v. You can think of all of these in terms of X, Y and Z. Of course, the unit X, Y and Z vectors are of unit norm. Of course they're mutually orhtogonal with respect to each other. And, of course, the Z vector is simply equal to X cross Y.
One of the interesting things about this is that a vector p can be written in terms of its projections onto the vectors u, v and w. So, p dot u is the projection onto the vector u, with the vector u. p dot v is the projection onto the vector v, times the vector v. p dot w is the projection onto the vector w, times the vector w.
How do you construct the coordinate frame? So, the first question, why do you want to construct the coordinate frame? It's often the case that you're given a vector a, which in homework 1, will be the viewing direction. You want to create an orthonormal basis from this. But of course, an orthonormal basis involves 3 unit vectors and you can't get it from a single vector, so need a second vector b, which in homework 1 is the up direction of the camera.
So given 2 vectors a and b, how to you create an orthonormal coordinate frame? Intuitively, you want to associate the vector w with a and the vector v with b. But, a and b are neither orthogonal vectors nor are they a unit norm, and we also need to find the u vector.
First let's try to find what the vector w is equal to. And the vector w should just be given by the vector a in this case. But the only problem with this is that A is not of unit norm, so we need to normalize it.
And we simply divide by the magnitude of the vector a. So that part is simple, the vector w is equal to the a divided by the unit norm of a. But how do we get v and u? That part is complicated, so why is is complicated? If the vector b is orthogonal to the vector a you're completely fine, you can just define b based on that.
The vector b may not be orthogonal to the vector a. So one thing to do is to remove its projection in the direction of a which would be a dot product but there is in fact a more elegant way of doing this. Even though b and now w are not necessarily orthogonal to each other we can use the cross product to find the third vector which is orthogonal to both b and w. So instead of finding the vector v, we first find the vector u. You write the vector u as equal to b cross product with w and divide the whole thing by the norm of b cross w.
And that's the formula I have written here, u is equal to b cross w divided by the norm of b cross w. The final step we need here, is to find the vector v, but given w and u, v is given by, w cross product with u. In this way you have created a complete coordinate frame, given 2 vectors, that need not be unit norm, that need not be orthogonal.
Of-course this fails when the norm, when this quantity is equal to zero, so if b and w are aligned with each other, in which case their cross product is equal to zero, then they are really the same vector, a and b are the same vector and you cannot create the coordinate frame.