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
    This question might be better suited for stackoverflow.com. You also need to show the code you have. Most likely it is a precision issue/bug. Mathematically, there is no reason for it to spiral inwards. ($x^2 + y^2$ should not change).2010-10-04
  • 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
    Beautiful! I would have probably revised my whole math for this...Thank you so much.2010-10-04
  • 0
    Like magic! Correct diagnosis from almost zero information. Thanks for posting that.2010-10-04
  • 0
    "very classic" - :D Yes, I've been bitten by that error too back in the day. +12010-10-04