   angles between two 3D vectors
  How do I measure the angles between two 3D vectors?There are two angles between them right?For example, if the 3D coordinates of the shoulders, elbows, and wrists are given, how do I measure the angles between humerus and radius as shown in the picture below? I believe there are two angles (two degrees of freedom + 1 degree of freedom for twisting which is not counted)
Link;  Thanks I'm aware of the dot productBut dot product only gives ONE angle   ;Quote:Original post by prologThanks I'm aware of the dot productBut dot product only gives ONE angleThere is only 1 angle between two 3D vectors.   ;  here is an example where DOT product gives 90 for both of them, but there is another angle that is different between the two poses(2 degrees of freedom);Quote:There is only 1 angle between two 3D vectors.Maybe I'm not using the right words here.In POSER, elbow has 3 angles (3 DOF)1. Twist2. Side-Side3. BendI'm not interested in twist. How do I measure "side-side" and "bend" if the coordinates of the shoulder, elbow and wrist are given?;  What you need then and what poser is doing, is giving you the angle on certain axis'.So your current arms are out like a "T" shape and facing down. So if you pulled your arm to your chest, that is the angle on the up axis. It is relative to the up-vector. So you have to dot product with a standard base vector.2 random vectors you have shown have 1 angle. You can decompose that into a rotation down and a rotation sideways.   ;  Thanks for the explanationCould you please elaborate a little?Because I'm a bit confused :)   ;Quote:Original post by prologThanks for the explanationCould you please elaborate a little?Because I'm a bit confused :)In your second capture, we can see "Transform". You're simply looking for the transform to pass from the system of coordinates of the humerus to the one you actually desire. If A is the orientation (matrix, for example) of the humerus and B is the desired orientation of the radius, then to pass from A to B, you do:XA=B=>X = B*inverse(A)X is the transform.You can compute the euler angles (three angles: yaw, pitch and roll ) for three specific transforms (their combination in a specific order gives the X transform) to orient the radius with regard to the humerus.You should, of course, know A and B.   ;  Thanks.Can A and B be 3D vectors (x,y,z) instead of matrices?X = B*inverse(A)Only square matrices have inverse right?   