all seems to work now
This commit is contained in:
parent
1d8903bb0c
commit
9694767997
|
@ -694,7 +694,7 @@ class Rotation:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def om2ax(om):
|
def om2ax(om):
|
||||||
"""Rotation matrix to axis angle pair."""
|
"""Rotation matrix to axis angle pair."""
|
||||||
return Rotation.qu2ax(Rotation.om2qu(om)) # HOTFIX
|
#return Rotation.qu2ax(Rotation.om2qu(om)) # HOTFIX
|
||||||
diag_delta = -_P*np.block([om[...,1,2:3]-om[...,2,1:2],
|
diag_delta = -_P*np.block([om[...,1,2:3]-om[...,2,1:2],
|
||||||
om[...,2,0:1]-om[...,0,2:3],
|
om[...,2,0:1]-om[...,0,2:3],
|
||||||
om[...,0,1:2]-om[...,1,0:1]
|
om[...,0,1:2]-om[...,1,0:1]
|
||||||
|
@ -878,14 +878,14 @@ class Rotation:
|
||||||
ax = np.where(np.isfinite(ro[...,3:4]),
|
ax = np.where(np.isfinite(ro[...,3:4]),
|
||||||
np.block([ro[...,0:3]*np.linalg.norm(ro[...,0:3],axis=-1,keepdims=True),2.*np.arctan(ro[...,3:4])]),
|
np.block([ro[...,0:3]*np.linalg.norm(ro[...,0:3],axis=-1,keepdims=True),2.*np.arctan(ro[...,3:4])]),
|
||||||
np.block([ro[...,0:3],np.broadcast_to(np.pi,ro[...,3:4].shape)]))
|
np.block([ro[...,0:3],np.broadcast_to(np.pi,ro[...,3:4].shape)]))
|
||||||
ax[np.abs(ro[...,3]) < 1.e-6] = np.array([ 0.0, 0.0, 1.0, 0.0 ])
|
ax[np.abs(ro[...,3]) < 1.e-8] = np.array([ 0.0, 0.0, 1.0, 0.0 ])
|
||||||
return ax
|
return ax
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def ro2ho(ro):
|
def ro2ho(ro):
|
||||||
"""Rodrigues-Frank vector to homochoric vector."""
|
"""Rodrigues-Frank vector to homochoric vector."""
|
||||||
f = np.where(np.isfinite(ro[...,3:4]),2.0*np.arctan(ro[...,3:4]) -np.sin(2.0*np.arctan(ro[...,3:4])),np.pi)
|
f = np.where(np.isfinite(ro[...,3:4]),2.0*np.arctan(ro[...,3:4]) -np.sin(2.0*np.arctan(ro[...,3:4])),np.pi)
|
||||||
ho = np.where(np.broadcast_to(np.sum(ro[...,0:3]**2.0,axis=-1,keepdims=True) < 1.e-6,ro[...,0:3].shape),
|
ho = np.where(np.broadcast_to(np.sum(ro[...,0:3]**2.0,axis=-1,keepdims=True) < 1.e-8,ro[...,0:3].shape),
|
||||||
np.zeros(3), ro[...,0:3]* (0.75*f)**(1.0/3.0))
|
np.zeros(3), ro[...,0:3]* (0.75*f)**(1.0/3.0))
|
||||||
return ho
|
return ho
|
||||||
|
|
||||||
|
@ -929,7 +929,7 @@ class Rotation:
|
||||||
hm *= hmag_squared
|
hm *= hmag_squared
|
||||||
s += tfit[i] * hm
|
s += tfit[i] * hm
|
||||||
with np.errstate(invalid='ignore'):
|
with np.errstate(invalid='ignore'):
|
||||||
ax = np.where(np.broadcast_to(np.abs(hmag_squared)<1.e-6,ho.shape[:-1]+(4,)),
|
ax = np.where(np.broadcast_to(np.abs(hmag_squared)<1.e-8,ho.shape[:-1]+(4,)),
|
||||||
[ 0.0, 0.0, 1.0, 0.0 ],
|
[ 0.0, 0.0, 1.0, 0.0 ],
|
||||||
np.block([ho/np.sqrt(hmag_squared),2.0*np.arccos(np.clip(s,-1.0,1.0))]))
|
np.block([ho/np.sqrt(hmag_squared),2.0*np.arccos(np.clip(s,-1.0,1.0))]))
|
||||||
return ax
|
return ax
|
||||||
|
|
|
@ -147,7 +147,7 @@ def om2eu(om):
|
||||||
|
|
||||||
def om2ax(om):
|
def om2ax(om):
|
||||||
"""Rotation matrix to axis angle pair."""
|
"""Rotation matrix to axis angle pair."""
|
||||||
return qu2ax(om2qu(om)) # HOTFIX
|
#return qu2ax(om2qu(om)) # HOTFIX
|
||||||
ax=np.empty(4)
|
ax=np.empty(4)
|
||||||
|
|
||||||
# first get the rotation angle
|
# first get the rotation angle
|
||||||
|
@ -262,7 +262,7 @@ def ax2ho(ax):
|
||||||
#---------- Rodrigues-Frank vector ----------
|
#---------- Rodrigues-Frank vector ----------
|
||||||
def ro2ax(ro):
|
def ro2ax(ro):
|
||||||
"""Rodrigues-Frank vector to axis angle pair."""
|
"""Rodrigues-Frank vector to axis angle pair."""
|
||||||
if np.abs(ro[3]) < 1.e-6:
|
if np.abs(ro[3]) < 1.e-8:
|
||||||
ax = np.array([ 0.0, 0.0, 1.0, 0.0 ])
|
ax = np.array([ 0.0, 0.0, 1.0, 0.0 ])
|
||||||
elif not np.isfinite(ro[3]):
|
elif not np.isfinite(ro[3]):
|
||||||
ax = np.array([ ro[0], ro[1], ro[2], np.pi ])
|
ax = np.array([ ro[0], ro[1], ro[2], np.pi ])
|
||||||
|
@ -274,7 +274,7 @@ def ro2ax(ro):
|
||||||
|
|
||||||
def ro2ho(ro):
|
def ro2ho(ro):
|
||||||
"""Rodrigues-Frank vector to homochoric vector."""
|
"""Rodrigues-Frank vector to homochoric vector."""
|
||||||
if np.sum(ro[0:3]**2.0) < 1.e-6:
|
if np.sum(ro[0:3]**2.0) < 1.e-8:
|
||||||
ho = np.zeros(3)
|
ho = np.zeros(3)
|
||||||
else:
|
else:
|
||||||
f = 2.0*np.arctan(ro[3]) -np.sin(2.0*np.arctan(ro[3])) if np.isfinite(ro[3]) else np.pi
|
f = 2.0*np.arctan(ro[3]) -np.sin(2.0*np.arctan(ro[3])) if np.isfinite(ro[3]) else np.pi
|
||||||
|
|
Loading…
Reference in New Issue