0
$\begingroup$

I recently started with 2d transformations in my class. I was just working with a program when I realized the formula I am using rotates the object spirally inwards. I have no idea whats over about this. I expected my figures to be rotated about a point but rather they all deform with every degree of rotation. I used a single point & realized that the point was moving spirally inwards with every degree I moved.

Can someone help me & let me know why it falls in rather than following circle or if that is what is expected of 2d rotation. I somehow felt its something related to how we view in 2d plane (or the imaginary z index here) but simply can't get around it.

I am following wiki & talking about this :

alt text

x' = xcosθ − ysinθ

y' = xsinθ + ycosθ

  • 0
    I should have...well its a pity I considered my code out of doubt & came running to join math.SE for this problem. I guess shows my dread for maths :)2010-10-04

1 Answers 1

7

My guess is that this is a very classic error in computer graphics implementation; you have to make sure that you don't accidentally use the new value of X when computing the new value of y! For instance, this code:

x = x*cos(theta) - y*sin(theta);
y = x*sin(theta) + y*cos(theta);

will actually perform the following operation:

x' =x cos θ - y sin θ
y' = x cos θ sin θ + y (cos θ - sin2θ)

and for small values of θ (i.e., incremental rotation) will generally cause the point to spiral in towards <0,0>.

  • 0
    "very classic" - :D Yes, I've been bitten by that error too back in the day. +12010-10-04