Sign in to follow this  
Raeldor

Difference between orthogonal and orthonormal

Recommended Posts

Hi, I just wanted to check. When dealing with a 3x3 3d matrix, is the difference between an orthonormal and an orthogonal matrix that the orthonormal matrix does not include scaling, whereas an orthogonal matrix could also include scaling? Thanks!

Share this post


Link to post
Share on other sites
Technically, a matrix is orthogonal and vectors are (form an) orthonormal (basis).
You can say an orthogonal matrix is composed of basis vectors which are orthonormal.

Share this post


Link to post
Share on other sites
Quote:
Original post by John Schultz
Technically, a matrix is orthogonal and vectors are (form an) orthonormal (basis).
You can say an orthogonal matrix is composed of basis vectors which are orthonormal.


So, is there a difference between an orthonormal matrix and an orthogonal matrix?

Share this post


Link to post
Share on other sites
Quote:
Original post by Raeldor
Quote:
Original post by John Schultz
Technically, a matrix is orthogonal and vectors are (form an) orthonormal (basis).
You can say an orthogonal matrix is composed of basis vectors which are orthonormal.


So, is there a difference between an orthonormal matrix and an orthogonal matrix?


While some literature (typically computer graphics related) uses the term "orthonormal matrix", this tends to ruffle some people's feathers as "incorrect- no such thing". Historically, orthogonal has a very specific meaning for matrices, and orthonormal has a very specific meaning for vectors. In the same sense that a vector is "perfect" while being unit length, a matrix is "perfect" by being orthogonal. An orthogonal matrix, by common, historical definition, must contain basis vectors which are orthonormal. If someone where to say an orthogonal matrix is equal to an orthonormal matrix, it would be linguistically true, where orthonormal matrix implies it is composed of orthonormal vectors.

While it's possible for a matrix to contain basis vectors which are orthogonal, but not unit length, it would be confusing to call such a matrix orthogonal given the long history of the use of the term 'orthogonal matrix'.

Share this post


Link to post
Share on other sites
Interesting. So it would be more correct to use the term 'orthogonal' in respect to matrices and forget about 'orthonormal' all together? Do you think most people just use the terms interchangably when referring to matrices?

Share this post


Link to post
Share on other sites
Quote:
Original post by Raeldor
Interesting. So it would be more correct to use the term 'orthogonal' in respect to matrices and forget about 'orthonormal' all together? Do you think most people just use the terms interchangably when referring to matrices?
Some people do use the terms somewhat interchangably, but as John mentioned this might annoy some people :-) For example, the matrix function in the Doom 3 math library is called 'orthonormalize' rather than 'orthogonalize'. Although the terminology is a bit suspect for the aforementioned reasons, I suppose it could be argued that if the matrix is always used to represent a pure rotation when that function is called, 'orthonormalize' is not inappropriate, inasmuch as the operation is being applied to a set of basis vectors representing a rotation.

A quick look through some of the math libraries I have lying around indicates that both terms are used. But if you want to avoid confusion and/or argument, just stick with 'orthogonalize' for your matrix function; that's what I do :-)

Share this post


Link to post
Share on other sites
I thought that the answer in your question sounded correct, but had no idea there were so many conflicting definitions. Orthogonal, I thought, indicated basic vectors seperated by right angles, and normal indicated unit vectors... and "orthonormal", therefore, meant that both were true.

Of course, "normal" really has nothing to do with length, so I don't know why I thought that.

Share this post


Link to post
Share on other sites
Ok, so just to make sure I have this right. An 'orthogonal' matrix comprises of 'orthonormal' basis vectors, ie the vectors in the columns of the matrices are unit length and at right angles to each other. Ie, an 'orthogonal' matrix will only ever represent a pure rotation?

Share this post


Link to post
Share on other sites
Not necessarily. Let's not forget about the often forgotten reflection transform. It too can be represented by an orthognal matrix.

Share this post


Link to post
Share on other sites
Quote:
Original post by Mastaba
Not necessarily. Let's not forget about the often forgotten reflection transform. It too can be represented by an orthognal matrix.


Ah, by that you mean a reflection around one of the axis, for example having one of the basis vectors as (-1,0,0)?

Share this post


Link to post
Share on other sites
Quote:
Original post by jyk
Quote:
Original post by Raeldor
For example, the matrix function in the Doom 3 math library is called 'orthonormalize' rather than 'orthogonalize'. Although the terminology is a bit suspect for the aforementioned reasons, I suppose it could be argued that if the matrix is always used to represent a pure rotation when that function is called, 'orthonormalize' is not inappropriate, inasmuch as the operation is being applied to a set of basis vectors representing a rotation.

A quick look through some of the math libraries I have lying around indicates that both terms are used. But if you want to avoid confusion and/or argument, just stick with 'orthogonalize' for your matrix function; that's what I do :-)


My math library uses normalize() for vectors, and normalize() for matrices (generalized and simplified; matrix normalize == orthogonalize, no need to add a new term as I've never had a need for a "normalized" matrix that is also not "orthogonalized/orthonormalized" (matrix / basis vectors)).

Share this post


Link to post
Share on other sites
Quote:
Original post by Mastaba
Not necessarily. Let's not forget about the often forgotten reflection transform. It too can be represented by an orthognal matrix.


That's true; this raises a useful point: the sign of the rotation matrix determinant* must be checked to see if the matrix is 'inside out' (e.g. sometimes an issue when using the 3DSMax SDK).




*rotation matrices have a +/- 1 determinant. When thinking about a rotation matrix as (its basis) vectors, the determinant can be computed as the scalar triple product: one cross product and one dot product.

[edit] as noted by Paradigm Shifter, a neg. determinant adds information: the matrix is no longer a pure rotation matrix. The revised statement: 'only an orthogonal matrix with a positive determinant can represent a pure rotation' is true.

Share this post


Link to post
Share on other sites
Quote:
Original post by Raeldor
Quote:
Original post by Mastaba
Not necessarily. Let's not forget about the often forgotten reflection transform. It too can be represented by an orthognal matrix.


Ah, by that you mean a reflection around one of the axis, for example having one of the basis vectors as (-1,0,0)?


A specific choice of a single basis vector is irrelevant (you can easily have a rotation with one of the basis vectors (-1,0,0) e.g. 180deg around the y-axis). A reflection transform is simply an orthogonal matrix which has determinant -1. If the determinant is +1, it is a rotation.

Orthogonal == preserves lengths and angles after transform.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this