Skip to content
Snippets Groups Projects
Commit b37c4817 authored by cmaffeo2's avatar cmaffeo2
Browse files

Updated initial placement of orientation beads

parent 87fc5b22
No related branches found
No related tags found
No related merge requests found
...@@ -394,15 +394,23 @@ class Segment(ConnectableElement, Group): ...@@ -394,15 +394,23 @@ class Segment(ConnectableElement, Group):
def contour_to_orientation(self,s): def contour_to_orientation(self,s):
assert( isinstance(s,float) or isinstance(s,int) or len(s) == 1 ) # TODO make vectorized version assert( isinstance(s,float) or isinstance(s,int) or len(s) == 1 ) # TODO make vectorized version
orientation = None orientation = None
if self.start_orientation is not None: if self.quaternion_spline_params is None:
# axis = self.start_orientation.dot( np.array((0,0,1)) ) axis = self.contour_to_tangent(s)
if self.quaternion_spline_params is None: axis = axis / np.linalg.norm(axis)
axis = self.contour_to_tangent(s) rotAxis = np.cross(axis,np.array((0,0,1)))
orientation = rotationAboutAxis( axis, self.twist_per_nt*self.contour_to_nt_pos(s), normalizeAxis=True ) rotAxisL = np.linalg.norm(rotAxis)
theta = np.arcsin(rotAxisL)
if rotAxisL > 0.001:
orientation0 = rotationAboutAxis( rotAxis/rotAxisL, theta*180/np.pi, normalizeAxis=False )
else: else:
q = interpolate.splev( s, self.quaternion_spline_params ) orientation0 = np.eye(3)
if len(q) > 1: q = np.array(q).T # TODO: is this needed? orientation = rotationAboutAxis( axis, self.twist_per_nt*self.contour_to_nt_pos(s), normalizeAxis=False )
orientation = quaternion_to_matrix(q) orientation = orientation.dot(orientation0)
else:
q = interpolate.splev( s, self.quaternion_spline_params )
if len(q) > 1: q = np.array(q).T # TODO: is this needed?
orientation = quaternion_to_matrix(q)
return orientation return orientation
def get_contour_sorted_connections_and_locations(self,type_): def get_contour_sorted_connections_and_locations(self,type_):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment