Original Post
Okay, I give up. I've scoured the internet and my texts. And I find the lack of information on this subject to be scandalous. I have a vector - a 3D vector, ya know v:(x,y,z) which is from the origin. I need to get Euler (properly Cardan henceforth) angles that would rotate a point, say (1,0,0), to match that 3D vector. When I say Cardan angles, I mean explicitly one of these: XYZ, XZY, YXZ, YZX, ZXY, ZYX. The rotation order may be any one of these, so no locked into a particular rotation order methods. No!! I cannot use quaternions or matrices or axis-angle or any other form. (PERIOD!) The deformation which I am forced to do *requires* (!!) Cardan angles since each axial rotation has a weight. So, no, don't bequest me to use quaternions or matrices or anything else. I need to convert a vector to Cardan Angles - I don't care if it involves quaternions, matrices, or axis-angles in between. The start is a 3D vector. The end is Cardan angles that take an axially-aligned vector and rotate it so as to match that 3D vector. And I know that there are two inevitable solutions (static frame and rotating frame). In this case, it should be safe to say that the frame is static - about the world coordinate system. I've tried Shoemake's approach first converting the 3D vector into an axis-angle version (three-points - origin, axial vector, 3D vector), then to matrix. The results have not been correct. For this approach, definitely need more information to fill in the process. This is a left-handed coordinate system with pre-concatenation of matrices, i.e.: Matrix m = RotZ() * RotY() * RotX() for an XYZ rotation matrix. Anyone smart enough to figure that out? Thanks, Robert