Advertisement

2D Rotation

Started by January 17, 2003 07:29 PM
3 comments, last by Peon 22 years, 1 month ago
I''ve been working on this for a little while not, and can''t figure out to do it. Currently, I''ve written a simple graphics program, and would like to add the ability to rotate an array to a given angle (radians, degrees, whatever) and then draw that image to the screen (using data from the arrays) Problem is, obviously, I can''t do it My system now is really weird, and I''m probably the only person on the planet who would do it in a strange way (it made sense to me at the time) I take the sin() of the angle, and plot that many pixels in the y direction. Then I take cos() of the same angle, and plot that many pixels in the x direction. I repeat this until the edge of the array, then repeat with the next line. Unfortunately, this doesn''t work (go figure... lol) I did manage to get a somewhat rotated version on the screen, but it was terribly skewed. I''m sure there is a better way to do this, probably using sin/cos to a greater extent. I''m pretty sure I''ve seen a method to do it before on one of the forums, but without the search feature, its quite difficult to find any of the old posts. Any suggestions as to how I could display a rotated version of an array''s contents (through pixel plotting) would be greatly appreciated.
Peon
Sorry to bump, won''t do this again :D We really need to get that search feature back up... it''s really helped in the past
Peon
Advertisement
http://www.inversereality.org/tutorials/graphics%20programming/bitmaprotation.html

This is for quadratic equations, if not then reading this is a waste of time. Hopefully that isnt the case.

Rotation Invariants:

The rotation of the coordinates axes through an angle theta that transforms the equation:

Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0

into the form:

A'(x')^2 + C'(y')^2 + D'x' + E'y' + F' = 0

by rotating with:

cot2(Theta) = (A - C)/B

so your rotation variants are:

1. F = F'
2. A + C = A' + C'
3. B^2 - 4AC = (B')^2 - 4A'C'

Notice the discrimanent in #3
You can use that for classification, if you need to.

1. Ellipse or circle: B^2 - 4AC < 0
2. Parabola: B^2 - 4AC = 0
3. Hyperbola: B^2 - 4AC > 0

**************************************
Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0
This equation is probably what you are looking for since it can be graphed on a 2D plane or axis.
(NOTE) NOT ALL VARIABLES HAVE TO BE USED, ONLY THE ONES THAT APPLY. I dont' ever remember having variables all the way to F.
**************************************

Hopefully I helped

-JYoung


[edited by - JYoung on January 20, 2003 11:07:55 AM]
maybe this will help,

to find the coordinates of point A rotated about B for any angle you can use this formula:

x1 = ((Ax-Bx)*Cos(angle) - (Ay-By)* Sin(angle))+Bx;
y1 = ((Ax-Bx)* Sin(angle) + (Ay-By)* Cos(angle))+By;

x1,y1 = your new x and y coordinates for point A.

Also you are need to resize or catch any rotated points that go out of bounds in your array.

I haven''t tried it this way but it should do the job.


Anime:Drugs would be cheaper.

This topic is closed to new replies.

Advertisement