1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Decompose rotations of a vector

  1. Apr 8, 2012 #1
    Hello guys,

    I'm programming a class in C++ that generates a circular signal. The signal consists of a sin and cos in perpendicular directions.

    The user has to input the norm to the surface, and the program generates the sine and cosine in 2 perpendicular directions to that norm to generate the circular signal.

    The question is the following. If the user provided this vector, how can I find those 2 perpendicular vectors?

    I think this problem can be reduced to finding the Euler angles that rotated this vector from being parallel to the z plane. So that the cosine remains on the x-axis, and the sine on the y-axis. Is it possible to decompose it that way?
    Last edited: Apr 8, 2012
  2. jcsd
  3. Apr 8, 2012 #2


    User Avatar
    Science Advisor

    Hey TheDestroyer.

    If you have the vector that is normal to the surface, then you can define the plane using n . (r - r0) = 0 where n is the normal and r0 is a point on the plane. Now to get the orthornomal basis (the two perpendicular vectors with respect to the supplied one) you have to solve the equation n . a = 0 for some a. Just choose the x and y components of a randomly and then solve for the z component of a. Normalize a to a unit vector.

    After this you take the cross product of n and a to get a vector b and then take the cross product of n and b to get c. Normalize c and b and your perpendicular orthogonal unit vectors to n are the normalized c and b vectors and that completes your orthonormalization.
  4. Apr 8, 2012 #3
    Thanks a lot, man :-)
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook