do explicit homomorphing

only in cases when the underlying math cannot guarantee that the
resulting quaternion follows the convention
This commit is contained in:
Martin Diehl 2019-04-18 16:26:05 +02:00
parent ce1bb589c7
commit 7570b187e7
1 changed files with 4 additions and 3 deletions

View File

@ -45,6 +45,7 @@ class Rotation:
else:
self.quaternion = Quaternion(q=quaternion[0],p=quaternion[1:4])
def __repr__(self):
"""Value in selected representation"""
return '\n'.join([
@ -60,7 +61,7 @@ class Rotation:
Rotation: Details needed (active/passive), rotation of (3,3,3,3)-matrix should be considered
"""
if isinstance(other, Rotation): # rotate a rotation
return self.__class__((self.quaternion * other.quaternion).asArray())
return self.__class__((self.quaternion * other.quaternion).homomorph())
elif isinstance(other, np.ndarray):
if other.shape == (3,): # rotate a single (3)-vector
( x, y, z) = self.quaternion.p
@ -108,7 +109,7 @@ class Rotation:
def misorientation(self,other):
"""Misorientation"""
return self.__class__((other.quaternion*self.quaternion.conjugated()).homomorph())
return other*self.inversed()
def average(self,other):
@ -1192,7 +1193,7 @@ def eu2qu(eu):
-P*sPhi*np.cos(ee[0]-ee[2]),
-P*sPhi*np.sin(ee[0]-ee[2]),
-P*cPhi*np.sin(ee[0]+ee[2]) ])
#if qu[0] < 0.0: qu.homomorph() !ToDo: Check with original
if qu[0] < 0.0: qu*=-1
return qu