Yes, you could also compute the angle difference between the side vectors as well. Here is a modified version of the sample code that also returns the difference between the side vectors:
Code:
import viz
viz.go()
euler1 = [0,0,0]
euler2 = [0,90,30]
def ComputeAngleDifference(euler1, euler2):
m = viz.Transform()
#Extract forward/up/side vector from euler1
m.setRot( vizmat.EulerToAxisAngle(euler1) )
d = m.get()
forward1 = d[8:11]
up1 = d[4:7]
side1 = d[:3]
#Extract forward/up/side vector from euler2
m.setRot( vizmat.EulerToAxisAngle(euler2) )
d = m.get()
forward2 = d[8:11]
up2 = d[4:7]
side2 = d[:3]
#Compute angle difference between forward/up/side vectors
forward_diff = vizmat.AngleBetweenVector(forward1,forward2)
up_diff = vizmat.AngleBetweenVector(up1,up2)
side_diff = vizmat.AngleBetweenVector(side1,side2)
return forward_diff,up_diff,side_diff
print ComputeAngleDifference(euler1,euler2)
Quote:
Alternatively, wouldn't a unique solution also result if I calculated the displacement from the facing direction AND the angle of rotation about that axis (the facing direction)?
|
Yes, this should provide a unique solution as well. I'll write up a sample script that does this and post it shortly.