Jump to content
  • Advertisement
Sign in to follow this  

Struggling to understand Arbitary rotation

This topic is 3591 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I really dont understand how the author comes up with that equation, under the sentence " Now we can see ...." I know that im doing something wrong, but dont know what, here is my thoughts, can someone point out what im doing wrong? Photobucket

Share this post

Link to post
Share on other sites
Think of only one plane in that picture: the one that contains v_perp, w and v'_perp. Think of v_perp and w as forming a basis in that plane. Now you simply want to rotate the point (1,0), which leaves you at (cos(alpha),sin(alpha)). Does that make sense?

Share this post

Link to post
Share on other sites
Oh yes, that makes sense, the trouble im having is when they introduce the v
ectors, such as

V'T = cos(theta)VT + sin(theta)W

When you say just cos(theta), that makes perfect sense to me, as from my understand its

---->soh, cah, toa

---->cos(theta) = adj/hyp

---->unit circle, so hyp == 1

---->cos(theta) = adj/1

---->cos(theta) * 1 = adj

---->cos(theta) = adj

But when you bring in the vectors such as

cos(theta) * Vec[3] = adj,

i dont understand how they equate to being the hypotenuse, i guess im misunderstanding something here

Share this post

Link to post
Share on other sites
Notice please that the basis mentioned by alvaro defines a co-ordinate system. I.e. v_perp and w define a local co-ordinate system in the world space. The co-ordinates cos(theta) and sin(theta) are then referred to the basis vectors v_perp and w, resp.

Assume you have a local co-ordinate system with a x axis
ex := [1 0 0]
and a y axis
ey := [0 1 0]
Both have unit length. Now you specify a point not by its x,y co-ordinates but by a length and an angle.
p := ( L,theta )
and compute the corresponding reactangular x,y co-ordinates as
px := L * cos( theta )
py := L * sin( theta )

To express this as a vector, you apply the co-ordinates to the belonging axes
p := px * ex + py * ey
== L * cos( theta ) * [1 0 0] + L * sin( theta ) * [0 1 0]
Now, you incorporate the L into the axis vectors, i.e. you scale the co-ordinate system:
== cos( theta ) * [L 0 0] + sin( theta ) * [0 L 0]
Do you see already the similarity to the equation in question?

Now, do the same not in the local co-ordinate space but in the global one. The local [L 0 0] and [0 L 0] vectors have a global equivalent, which can be computed by applying the local-to-global transformation. We don't need to do so explicitely, since they are already computed as v_perp and w. Hence, in global co-ordinates we get
p = cos( theta ) * vperp + sin( theta ) * w

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!