Calculate Rotational Body Rate for Vector Motion | Vector A & B

  • Context: Graduate 
  • Thread starter Thread starter SEG9585
  • Start date Start date
  • Tags Tags
    Motion Vector
Click For Summary

Discussion Overview

The discussion revolves around calculating the rotational body rate required for an arbitrary 3D unit vector (Vector A) to align with a stationary unit vector (Vector B). Participants explore the mathematical relationships and conditions necessary for this alignment, considering various approaches and examples.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Debate/contested

Main Points Raised

  • One participant suggests that to move Vector A directly through Vector B, one of the three rotational parameters must be zero, implying a specific directional movement.
  • Another participant counters that all parameters can be non-zero, using the analogy of a cannon that can curve its trajectory to reach a target at different heights.
  • A third participant describes the need for both horizontal and vertical angular rates to transition between two unit vectors, emphasizing the importance of avoiding unnecessary rotational components that could divert the path.
  • Further contributions highlight that the solution is not unique, as multiple rotational paths can lead to the same endpoint, and suggest starting with unit vectors to simplify calculations.
  • One participant provides a specific example with numerical values for vectors A and B, seeking a method to calculate the new position of A at a defined rotational rate over time.
  • Another participant introduces a mathematical framework involving inner products and bivectors to describe the relationship between the two vectors, suggesting a method to interpolate between them using a parameter.

Areas of Agreement / Disagreement

Participants express differing views on the conditions necessary for Vector A to align with Vector B, with no consensus reached on whether one of the rotational parameters must be zero or if all can be non-zero. The discussion remains unresolved regarding the best approach to calculate the required rotational body rate.

Contextual Notes

Some participants note the importance of normalizing vectors and the implications of using non-unit vectors in calculations, which may affect the interpretation of the rotational angle and the resulting trajectory.

SEG9585
Messages
34
Reaction score
0
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...
 
Physics news on Phys.org
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
 
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 don't know what this translates to in terms of degrees/time [dx dy 0].
 
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
 
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?
 
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:

http://www.mrao.cam.ac.uk/~clifford/publications/abstracts/imag_numbs.html
 
Last edited:

Similar threads

  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
3
Views
2K
  • · Replies 9 ·
Replies
9
Views
1K
  • · Replies 16 ·
Replies
16
Views
5K
  • · Replies 30 ·
2
Replies
30
Views
2K
  • · Replies 4 ·
Replies
4
Views
1K
  • · Replies 42 ·
2
Replies
42
Views
7K