Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Vector Motion Question

  1. Apr 27, 2007 #1
    I've been stuck on this problem for a little while and was wondering if anyone could help me out:

    I have 2 unit vectors, say vector A and vector B.
    Vector B is stationary (never changes), while Vector A is arbitrary 3-d unit vector which may move with a 3-dimensional rotational body rate [dx dy dz] in degrees/second.

    I need to figure out the body rate which would, after a given body rate quantity (in deg/sec), cause Vector A to pass directly through Vector B.

    In other words, I need a rotational body rate which would move along the vector (Vector A - Vector B).

    I know that there is more than 1 solution to this problem, since one of the three parameters needs to be 0 in order to move directly through the other vector (think in terms of pointing a cannon -- moving dx and dy is all you need to point the cannon correctly. If you add dz the cannon will be rotating on its axis and end up curving around the target).

    Thanks for any help with this...
  2. jcsd
  3. Apr 27, 2007 #2


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    None of the parameters needs to be 0 if I understand this... looking at the cannon, imagine it starts pointing up. It could curve in a circular arc and come back into the plane directly at one other height, for example.

    The terminology you're using is a bit confusing though, perhaps you can explain
  4. Apr 27, 2007 #3
    Imagine a 3-d plane, you are on the origin looking in a direction as defined by a unit vector. You want to move such that you will end up at another defined unit vector. Say you were looking at [1 1 1] and want to move to [0 0 1], to get there you would need a horizontal angular rate and a vertical angular rate (and 0 rotational rate), which would be [-1 -1 0]. If you had a rotational component you would end up slewing so that your other rates start curving you away from the target.

    The above example is easy, but say your vector was [.1 .2 .3] and target was [.4 .5 .6]. To move to that vector, you need to move in the direction [.3 .3 .3], but I dont know what this translates to in terms of degrees/time [dx dy 0].
  5. Apr 27, 2007 #4


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    You aren't trying to find something like [dx,dy,0], what you need is a rate of change vector that makes A rotate along the plane that A and B form. So you may need a z component, depending on which two vectors you want. Also note the answer won't be unique, because you can have A do a full circle + more in one direction and it would still reach the same point again.

    I would start the problem by finding the unit vectors in the direction of A and B, so you don't need to worry about what size they are (which is what's messing up the second example you gave). If you rotate A/|A| such that it passes through B/|B|, then rotating A the same way makes it pass through B.

    Do you know what polar spherical coordinates are? Because if you can put A and B into those, you're pretty much done
  6. Apr 30, 2007 #5
    Sorry if I am slow but I'm still not getting the results I need.
    Here's a specific example:

    A = [.4756 .8668 -.15]

    B = [.9361 .53 -.2248]

    I want to move from A to B at a rate of 5 degrees per second (magnitude), and record each new position of A every second (record A every time it moves 5 degrees in a matlab script). What calculation do I apply to A for every iteration so that it will eventually hit B?
  7. May 11, 2007 #6
    Let A and B be unit vectors in 3-space spanned by orthonormal vectors
    e1, e2, e3. A = a1e1 + a2e2 + a3e3 with a similar expression for B.
    Since AA = BB =1 (unit vectors), we can bring A into coincidence with
    B by writing
    B = (AA)B = A(AB) = A(A.B + A^B).
    (Contrary to popular opinion, vectors can be multiplied together!)
    A.B = cos(phi_b), the usual inner product;
    A^B = i sin(phi_b), where i is a unit bivector defining the plane containing A and B.
    phi_b = arccos(a1b1 + a2b2 + a3b3).
    To get i, just divide A^B by sin(phi_b).
    A^B = (a1e1 + a2e2 + a3e3)^(b1e1 + b2e2 + b3e3)
    = (a1b2 - a2b1)e1e2 + (a2b3 - a3b2)e2e3 + (a3b1 - a1b3)e3e1
    =: c3e1e2 + c1e2e3 + c2e3e1, so that
    i = A^B/sin(phi_b).
    Now, armed with the value of i, we can calculate
    the vector v(phi) in the i-plane corresponding to any value of phi:
    v(phi) = A cos(phi) + Ai sin(phi), where Ai sin(phi_b) is the vector :
    Ai sin(phi_b) = (a1e1 + a2e2 + a3e3)(c3e12 + c1e23 + c2e31)
    = (a3c2 - a2c3)e1 + (a1c3 - a3c1)e2 + (a2c1 - a1c2)e3.
    Here we have used em en = -en em and em em = 1.
    Your vectors A and B are

    A = 0.47559106 0.86678370 -0.14999718
    B = 0.93610000 0.53000000 -0.22480000
    Note that A is a unit vector (this is required!) but B is not. This
    means that the phi is not a rotation angle as such but just a parameter
    for interpolating between the starting (unit) vector A and the final
    vector V, which becomes B at phi_b; i.e. A is rotated and scaled to get B.
    If B is first normalized, then A is rotated but not scaled. Product Ai is
    Ai = 1.4166382 e1 -0.81935448 e2 -0.24308883 e3.
    8 vectors V(phi) follow:
    Phi(radians) Vector
    .000000 [ 0.475591 0.866784 -.149997]
    .504386E-01 [ 0.546409 0.824372 -.162062]
    .100877 [ 0.615838 0.779863 -.173715]
    .151316 [ 0.683699 0.733371 -.184926]
    .201754 [ 0.749822 0.685013 -.195667]
    .252193 [ 0.814038 0.634913 -.205910]
    .302632 [ 0.876183 0.583198 -.215629]
    .353070 [ 0.936100 0.530000 -.224800]

    I hope this is more or less what you wished for. If you want to learn
    more about multiplying vectors together, download the pdf-file at the link:

    Last edited: May 12, 2007
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Similar Discussions: Vector Motion Question