[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]

    {
    Here is a little something I cooked up as a reference. It is complete
    3 dimentional rotation formulas. Hopefully they will help you get a good
    start. They are a little different then some of the VLA's (or whoever)
    formulas because I derived them myself for my own purposes :) They do work,
    as I use them myself. Hopefully they will give you a little insight on
    how to begin.

                -= Conventions =-

    sx = Sin(XAngle)       cx = Cos(XAngle)
    sy = Sin(YAngle)       cy = Cos(YAngle)
    sz = Sin(ZAngle)       cz = Cos(ZAngle)

               -= Matrix Rotations =-

      X-Rotation Matrix
    +            +
    | 1   0   0  |
    | 0   cx  sx |
    | 0  -sx  cx |
    +            +

      Y-Rotation Matrix
    +            +
    | cy  0  -sy |
    | 0   1   0  |
    | sy  0   cy |
    +            +

      Z-Rotation Matrix
    +            +
    |  cz  sz  0 |
    | -sz  cz  0 |
    |  0   0   1 |
    +            +

      Total rotation matrix

       [0,0]                                       [0,2]
    +                                                    +
    |  (cz*cy)+(sz*sx*sy)   (cy*-sz)+(cz*sx*sy)  (cx*sy) |
    |                                                    |
    |  (sz*cx)              (cz*cx)              (-sx)   |
    |                                                    |
    |  (-sy*cz)+(sz*sx*cy)  (sz*sy)+(cz*sx*cy)   (cx*cy) |
    +                                                    +
       [2,0]                                       [2,2]

       Rotation Order:  Z,X,Y ( Rotated on Z axis first, then X, then Y )

         -= Coordinate Transformations =-

    FinalCoord.x = InitialCoord.x * Matrix[0,0] +
                    InitialCoord.y * Matrix[1,0] +
                    InitialCoord.z * Matrix[2,0]
    FinalCoord.y = InitialCoord.x * Matrix[0,1] +
                    InitialCoord.y * Matrix[1,1] +
                    InitialCoord.z * Matrix[2,1]
    FinalCoord.z = InitialCoord.x * Matrix[0,2] +
                    InitialCoord.y * Matrix[1,2] +
                    InitialCoord.z * Matrix[2,2]

         -= Non-Matrix Rotations =-

     X - Rotations:
       x = x
       y = (y * cx) - (z * sx)
       z = (y * sx) + (z * cx)

     Y - Rotations:
       x = (x * cy) + (z * sx)
       y = y
       z = (z * cy) - (x * sy)

     Z - Rotations
       x = (x * cz) - (y * sz)
       y = (x * sz) + (y * cz)
       z = z

     -= EOF =-

[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]