[comp.graphics] Transforming Quadric Surfaces

bcorrie@uvicctr.UUCP (Brian Corrie) (10/01/88)

Hello folks, I have a query for all of you trapped in the graphics 
Twilight Zone.

Imagine a surface, a quadric surface, caught in ( du du du du du du du du )
                        THE TWILIGHT ZONE

But seriously.

I have the following problem : Given a quadric of the form
        Ax^2 + 2Bxy + 2Cxz + 2Dx + Ey^2 + 2Fyz + 2Gy + Hz^2 + 2Iz + J = 0

  I store the coefficients in a 4x4 matrix. I believe this is a kind of
  standard since I have seen it in several journal articles. The matrix and
  the form of the equation is given below.

               | A B C D |   | x |
   [x,y,z,1] * | B E F G | * | y | = 0
               | C F H I |   | z |
               | D G I J |   | 1 |

  My problem is that I need to translate and rotate this quadric by a standard
  3D translation. ( eg. Translate its center to origin ). It is my
  understanding that this can be done by using a standard 4x4 3D homogenous
  transformation matrix and its transpose or its inverse. It is done
  something like this

      Q' = T Q T' where Q is the quadratic matrix, Q' is the translated
  quadratic matrix, T and T' are the translation matrix and its transpose.

  So what is wrong???? I don't know whether to use T and its transpose, or
  T and its inverse. For a pure translation, I get a correct result if I use
  the inverse of T and the transpose of the inverse of T. Is this correct??
  I need some confirmation or pointers. If Eric Haines is reading this,
  I got this from your "Essential Ray Tracing Algorithms" paper in the
  SIGGRAPH '87 Introduction to Ray Tracing course notes. Unfortunately,
  one of the articles he references is another course notes that I don't
  have, and the other is less than clear or contradicts the results that
  I have gotten.

  Well fellow netters, can you help me?????

  For anyone who cares, all this is hopefully going to allow me to ray
  trace quadric surfaces if I can ever get it to work.

  Thanks in advance for any help. Please try email first, and if you
  want I will try to send you info, although with the mailers and my
  lack of net knowledge, on top of my schedule, you will probably never
  here from me again .....

  Why ? Because I have entered THE TWILIGHT ZONE... .  .   .    .      .

                   ( du du du du du du du du )


-- 
  Brian Corrie, University of Victoria, Victoria, B.C., Canada

  Under the most rigourously controlled conditions of pressure,
  temperature, volume, humidity and other variables, the organism
  will do as it damn well pleases.

  Don't worry, I know nothing of what I babble about.......

saponara@batcomputer.tn.cornell.edu (John Saponara) (10/05/88)

In article <511@uvicctr.UUCP> bcorrie@uvicctr.UUCP (Brian Corrie) writes:
>Imagine a surface, a quadric surface, caught in ( du du du du du du du du )
>                        THE TWILIGHT ZONE
 
>  My problem is that I need to translate and rotate this quadric by a standard
>  3D translation. ( eg. Translate its center to origin ). It is my
>  understanding that this can be done by using a standard 4x4 3D homogenous
>  transformation matrix and its transpose or its inverse. It is done
>  something like this
>
>      Q' = T Q T' where Q is the quadratic matrix, Q' is the translated
>  quadratic matrix, T and T' are the translation matrix and its transpose.
>
>  So what is wrong???? I don't know whether to use T and its transpose, or
>  T and its inverse. For a pure translation, I get a correct result if I use
>  the inverse of T and the transpose of the inverse of T. Is this correct??
>  I need some confirmation or pointers.

From Jim Blinn's "The Algebraic Properties of Homogeneous Second Order
Surfaces":

		Q' = T* Q T*t

	[where T* is the adjoint (or inverse) of the transformation matrix,
	T*t the transpose of the adjoint]

	That is, to transform a quadric curve, multiply on the left by the
	adjoint (i.e. generalized inverse) of the point transformation and on
	the right by the transpose of the adjoint.

By the way, does anyone know if this Blinn article has been reprinted anywhere
but SIGGRAPH class notes (i.e. someplace more accessible)?  If not, why not?

Eric Haines (who does not walk and talk like John Saponara - I don't know why
	the computer thinks I'm him)

NOTE: this account goes away soon, so write me at hpfcla!hpfcrs!eye!erich

spencer@spline.eecs.umich.edu (Spencer W. Thomas) (10/05/88)

In article <511@uvicctr.UUCP> bcorrie@uvicctr.UUCP (Brian Corrie) writes:
>I have the following problem : Given a quadric of the form
>        Ax^2 + 2Bxy + 2Cxz + 2Dx + Ey^2 + 2Fyz + 2Gy + Hz^2 + 2Iz + J = 0
>
>  I store the coefficients in a 4x4 matrix. I believe this is a kind of
>  standard since I have seen it in several journal articles. The matrix and
>  the form of the equation is given below.
>
>               | A B C D |   | x |
>   [x,y,z,1] * | B E F G | * | y | = 0
>               | C F H I |   | z |
>               | D G I J |   | 1 |
>
>  My problem is that I need to translate and rotate this quadric by a standard
>  3D translation. ( eg. Translate its center to origin ). It is my
>  understanding that this can be done by using a standard 4x4 3D homogenous
>  transformation matrix and its transpose or its inverse.

Yup.  Thats right.

Suppose your transformation is T.  I.e.

[x,y,z,1] * T = [x',y',z',w']

Letting T(-1) is the inverse of T, you have
[x,y,z,1] = [x',y',z',w'] * T(-1)

Let Tt be the transpose of T, then

Tt  | x | = | x' |
    | y |   | y' |
    | z |   | z' |
    | 1 |   | w' |

and
    | x | = Tt(-1) * | x' |
    | y |            | y' |
    | z |            | z' |
    | 1 |            | w' |

Thus,
               | A B C D |   | x |
   [x,y,z,1] * | B E F G | * | y | = 0
               | C F H I |   | z |
               | D G I J |   | 1 |

is the same as

                           | A B C D |            | x |
   [x',y',z',w'] * T(-1) * | B E F G | * Tt(-1) * | y | = 0
                           | C F H I |            | z |
                           | D G I J |            | 1 |

So your new quadric matrix must be T(-1) * M * Tt(-1).

=Spencer (spencer@crim.eecs.umich.edu)

flip@pixar.UUCP (Flip Phillips) (10/06/88)

In article <511@uvicctr.UUCP> bcorrie@uvicctr.UUCP (Brian Corrie) writes:
[...]
>Imagine a surface, a quadric surface, caught in ( du du du du du du du du )

Sure, the music goes 'du du du du du' but if you're talking about a quadric
surface shouldn't it go 'du dv du dv du dv du dv' ????


sorry, couldn't resist.


-- 
Flip Phillips                                        {sun | ucbvax}!pixar!flip
Pixar - Marin County, California