Need Help With 2D Rotation

The Partridge Family were neither partridges nor a family. Discuss.
Post Reply
Walka
Posts: 19
Joined: September 7th, 2014, 3:45 am

Need Help With 2D Rotation

Post by Walka » September 13th, 2017, 5:28 am

After a lot of googling and Youtube I am lost on how to make a 2D image rotate. It seems to more I search the more confused I get lol I am attaching a simple project where I have a triangle drawn on the screen. For the sake of argument we will pretend that the triangle is a "ship". I have draw 2 sides of the triangle a different color to indicate the front of the ship. Can anybody help me with making my ship rotate?

For instance lets say I want the ship to point towards the mouse cursor.
Attachments
NewGame.zip
(5.13 MiB) Downloaded 182 times

User avatar
chili
Site Admin
Posts: 3948
Joined: December 31st, 2011, 4:53 pm
Location: Japan
Contact:

Re: Need Help With 2D Rotation

Post by chili » September 14th, 2017, 4:22 am

Can't download right now. Are you trying to rotate a raster image, or just a triangle drawn with lines? If it is the latter, then it's pretty easy my friend.

Check out my Advanced Tutorial 3 for a thorough explanation about rotation math.
Chili

albinopapa
Posts: 4373
Joined: February 28th, 2013, 3:23 am
Location: Oklahoma, United States

Re: Need Help With 2D Rotation

Post by albinopapa » September 14th, 2017, 6:07 pm

Yeah, it's going to be best to understand matrix transformations if you ever want to move on to 3D.

I added a matrix class and a Vec3 class to your project. I changed the Vec2 class to a template class and renamed the GetNormalized to Normalize, but those were just for my sanity.

The ship now points at the mouse cursor, check out the Ship::Draw function for the matrix stuff.

I used vector math to get the direction from ship to mouse pointer in Ship::Update, then I use atan2f in the draw function to get the angle.
Attachments
NewGame_Rotations.zip
(564.85 KiB) Downloaded 180 times
If you think paging some data from disk into RAM is slow, try paging it into a simian cerebrum over a pair of optical nerves. - gameprogrammingpatterns.com

User avatar
chili
Site Admin
Posts: 3948
Joined: December 31st, 2011, 4:53 pm
Location: Japan
Contact:

Re: Need Help With 2D Rotation

Post by chili » September 15th, 2017, 1:34 am

Matrix stuff is definitely required learning, but I would not recommend starting with them. There is nothing about matrices or rotation that obliges you to use them together. One problem at a time.

First learn how to do rotation math with in simple C++ statements. Once you have your head around that, then you can study matrices, study how they can be used to encode and concatenate transformations, and apply that tech to rotation / scaling.
Chili

Walka
Posts: 19
Joined: September 7th, 2014, 3:45 am

Re: Need Help With 2D Rotation

Post by Walka » September 15th, 2017, 5:35 am

Yes its just a triangle with a draw line function. I will definitely check out that tutorial chili. Most things I have found online haven't really explained it well

Walka
Posts: 19
Joined: September 7th, 2014, 3:45 am

Re: Need Help With 2D Rotation

Post by Walka » September 15th, 2017, 5:37 am

albinopapa wrote:Yeah, it's going to be best to understand matrix transformations if you ever want to move on to 3D.

I added a matrix class and a Vec3 class to your project. I changed the Vec2 class to a template class and renamed the GetNormalized to Normalize, but those were just for my sanity.

The ship now points at the mouse cursor, check out the Ship::Draw function for the matrix stuff.

I used vector math to get the direction from ship to mouse pointer in Ship::Update, then I use atan2f in the draw function to get the angle.
A lot of what you said may as well be in Spanish lol

Walka
Posts: 19
Joined: September 7th, 2014, 3:45 am

Re: Need Help With 2D Rotation

Post by Walka » September 15th, 2017, 5:55 am

@albinopapa what you did works great and that is exactly what I was looking for. I've been over looking you code and I am having trouble understanding exactly what is happening. So I am going to check out Chili's advanced tutorials to try to understand this stuff better.

User avatar
chili
Site Admin
Posts: 3948
Joined: December 31st, 2011, 4:53 pm
Location: Japan
Contact:

Re: Need Help With 2D Rotation

Post by chili » September 15th, 2017, 6:27 am

Walka wrote:@albinopapa what you did works great and that is exactly what I was looking for. I've been over looking you code and I am having trouble understanding exactly what is happening. So I am going to check out Chili's advanced tutorials to try to understand this stuff better.
Right on. If you're doing line drawing it will be easy going I think. Watch A3 and hit me up here or on the Discord if you need clarification on anything. I think A4 or A5 goes over matrices.

We might be able to give you links to some other vids as well on rotation stuff as well as matrix/linear algebra stuff.
Chili

Walka
Posts: 19
Joined: September 7th, 2014, 3:45 am

Re: Need Help With 2D Rotation

Post by Walka » September 15th, 2017, 6:29 am

I will check it out soon, I am currently grinding out Destiny 2 ;) Thanks for the help

User avatar
chili
Site Admin
Posts: 3948
Joined: December 31st, 2011, 4:53 pm
Location: Japan
Contact:

Re: Need Help With 2D Rotation

Post by chili » September 15th, 2017, 3:39 pm

Check your PMs ;)
Chili

Post Reply