View Single Post
  #8  
Old 02-16-2007, 02:13 PM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
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.
Reply With Quote