added “non-strict” version to find disorientation, neglecting the search for axis falling into SST (has linear instead of quadratic effort).
This commit is contained in:
parent
fb48719283
commit
24bd3a6eee
|
@ -844,7 +844,9 @@ class Orientation:
|
||||||
return Orientation(quaternion=me,symmetry=self.symmetry.lattice)
|
return Orientation(quaternion=me,symmetry=self.symmetry.lattice)
|
||||||
|
|
||||||
|
|
||||||
def disorientation(self,other):
|
def disorientation(self,
|
||||||
|
other,
|
||||||
|
strict = True):
|
||||||
'''
|
'''
|
||||||
Disorientation between myself and given other orientation
|
Disorientation between myself and given other orientation
|
||||||
(currently needs to be of same symmetry.
|
(currently needs to be of same symmetry.
|
||||||
|
@ -854,13 +856,15 @@ class Orientation:
|
||||||
if self.symmetry != other.symmetry: raise TypeError('disorientation between different symmetry classes not supported yet.')
|
if self.symmetry != other.symmetry: raise TypeError('disorientation between different symmetry classes not supported yet.')
|
||||||
|
|
||||||
misQ = self.quaternion.conjugated()*other.quaternion
|
misQ = self.quaternion.conjugated()*other.quaternion
|
||||||
|
mySymQs = self.symmetry.symmetryQuats() if strict else self.symmetry.symmetryQuats()[:1] # take all or first sym equivalent
|
||||||
for i,sA in enumerate(self.symmetry.symmetryQuats()):
|
otherSymQs = other.symmetry.symmetryQuats()
|
||||||
for j,sB in enumerate(other.symmetry.symmetryQuats()):
|
|
||||||
|
for i,sA in enumerate(mySymQs):
|
||||||
|
for j,sB in enumerate(otherSymQs):
|
||||||
theQ = sA.conjugated()*misQ*sB
|
theQ = sA.conjugated()*misQ*sB
|
||||||
for k in xrange(2):
|
for k in xrange(2):
|
||||||
theQ.conjugate()
|
theQ.conjugate()
|
||||||
hitSST = other.symmetry.inDisorientationSST(theQ)
|
hitSST = other.symmetry.inDisorientationSST(theQ) or not strict
|
||||||
hitFZ = self.symmetry.inFZ(theQ)
|
hitFZ = self.symmetry.inFZ(theQ)
|
||||||
breaker = hitSST and hitFZ
|
breaker = hitSST and hitFZ
|
||||||
if breaker: break
|
if breaker: break
|
||||||
|
|
Loading…
Reference in New Issue