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

    {
    > This doesn't have anything to do with the flicker problem, but I was
    > wondering if you could tell me how to scale and rotate .COD images.

    Although  I  posted  some code to flip COD's horizontally & vertically
    some  time  ago,  I  won't make it a regular feature of AniVGA, as I'm
    working on compiled bitmaps and thus, altering the "data" after having
    it compiled into a procedure is close to impossible...
    However,  if  you are speaking about scaling & rotation in MAKES: yes,
    one  could  include  it.  To be honest, I was just to lazy to code all
    that matrix crap necessary.
    For  the  interested  reader: to scale the points (x,y) of a matrix by
    some factor f, you just have to apply the matrix
    (f 0)
    (0 f)
    to all its points.
    A  rotation  by  an  angle  of  z  degrees  counterclockwise about the
    rotation  center (u,v) is more complex: one first has to transform the
    point coordinates to homogeneous coordinates (that is: append a one as
    the  3rd  component: (x,y) -> (x,y,1); if during computations this 3rd
    component  "c"  of  a vector (a,b,c) becomes <>1, then renormalize the
    vector to (a/c,b/c,1)).
    Having done so, the rotation consists of three steps:
    a) make (u,v) the new origin of your pixels (instead of (0,0))
    b) rotate the data by z degrees about the new origin (0,0)
    c) retransform the true (0,0) origin

    Step  a)  consists  of  applying the following matrix M1 to the pixels
    (x,y,1):
    ( 1  0 0)
    ( 0  1 0)
    (-u -v 1)

    Likewise, step b) is done by the matrix M2:
    ( cos(z) sin(z) 0 )
    (-sin(z) cos(z) 0 )
    (   0      0    1 )

    And step c) is done by M3:
    ( 1  0 0)
    ( 0  1 0)
    (+u +v 1)

    These  three  steps  can  be  squeezed  into one matrix application by
    combining  the  three  matrices into one matrix M=M1*M2*M3 (with "*" =
    matrix multiplication operator from linear algebra).

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