Vertex rotation fails

Started by
1 comment, last by Buckeye 10 years, 1 month ago

Keep in mind that I'm really using these coords for a sprite,so I don't care about the Z if that matters at all...

So i have the following vector:

v(589,277)

And I want to rotate it 90 degrees counter clockwise.

I build a rotation matrix like this:

D3DXMatrixRotationZ(&rotation, D3DXToRadian(-90));

I then just transform the vector with:

D3DXVec2TransformCoord(&res, &D3DXVECTOR2(x,y), &rotation); //x = 589,y = 277

The resulting x is the correct one: 276, but the y is very far from the correct result: -589 (it should be something in the range 0-10)

What am I doing wrong?

EDIT: I also tried using a 3d vector with the z = 1..the same

Advertisement
D3DXToRadian(90)

Alternatively:
-y, x 90 degrees clockwise
y, -x 90 degrees counter-clockwise

You're getting the results you're asking for in the calc. A position of 589 on the X-axis rotated by 90 degrees is at -589 on the Y-axis. Can you describe what you're trying to do, rather than how you're trying to do it?

Do you want to rotate the sprite by 90 degrees (in its current position), or rotate its position by 90 degrees?

If you're trying to rotate the sprite (assuming you're using ID3DXSprite), take a look at ID3DXSprite::SetTransform.

Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.

You don't forget how to play when you grow old; you grow old when you forget how to play.

This topic is closed to new replies.

Advertisement