/[escript]/trunk/pycad/py_src/transformations.py
ViewVC logotype

Diff of /trunk/pycad/py_src/transformations.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 905 by gross, Mon Nov 20 11:23:24 2006 UTC revision 915 by gross, Thu Dec 14 06:12:53 2006 UTC
# Line 68  class Rotatation(Transformation): Line 68  class Rotatation(Transformation):
68         self.__point0=numarray.array(point0,type=_TYPE)         self.__point0=numarray.array(point0,type=_TYPE)
69         self.__point1=numarray.array(point1,type=_TYPE)         self.__point1=numarray.array(point1,type=_TYPE)
70         self.__axis=self.__point1-self.__point0         self.__axis=self.__point1-self.__point0
71         lax=dot(self.__axis,self.__axis)         lax=numarray.dot(self.__axis,self.__axis)
72         if not lax>0:         if not lax>0:
73            raise ValueError("points must be distinct.")            raise ValueError("points must be distinct.")
74         self.__axis/=math.sqrt(lax)         self.__axis/=math.sqrt(lax)
# Line 81  class Rotatation(Transformation): Line 81  class Rotatation(Transformation):
81         z=x-self.__point0         z=x-self.__point0
82         z0=numarray.dot(z,self.__axis)         z0=numarray.dot(z,self.__axis)
83         z_per=z-z0*self.__axis         z_per=z-z0*self.__axis
84         z1=numarray.dot(z_per,z_per)         lz_per=numarray.dot(z_per,z_per)
85         if z1>0:         if lz_per>0:
86           axis1=z_per/math.sqrt(z1)           axis1=z_per/math.sqrt(lz_per)
87           axis2=__cross(self.__axis,axis1)           axis2=_cross(axis1,self.__axis)
88           axis2/=math.sqrt(axis2)           lax2=numarray.dot(axis2,axis2)
89           return z0*self.__axis+z1*(math.cos(self.__angle)*axis1-math.sin(self.__angle)*axis2)+self.__point0           if lax2>0:
90                axis2/=math.sqrt(lax2)
91                return z0*self.__axis+math.sqrt(lz_per)*(math.cos(self.__angle)*axis1-math.sin(self.__angle)*axis2)+self.__point0
92             else:
93                return x
94         else:         else:
95           return x           return x
96  def __cross(x, y):  def _cross(x, y):
97      """      """
98      Returns the cross product of x and y      Returns the cross product of x and y
99      """      """
100      return numarray.array([x[1] * y[2] - x[2] * y[1], x[2] * y[0] - y[0] * x[2], x[0] * y[1] - y[1] * x[0]], _TYPE)      return numarray.array([x[1] * y[2] - x[2] * y[1], x[2] * y[0] - x[0] * y[2], x[0] * y[1] - x[1] * y[0]], _TYPE)
101    
102  class Dilation(Transformation):  class Dilation(Transformation):
103      """      """
# Line 103  class Dilation(Transformation): Line 107  class Dilation(Transformation):
107         """         """
108         creates a dilation with a center an a given expansion/contraction factor         creates a dilation with a center an a given expansion/contraction factor
109         """         """
110         if not factor>0:         if not abs(factor)>0:
111            raise ValueError("factor must be positive.")            raise ValueError("factor must be non-zero.")
112         self.__factor=factor         self.__factor=factor
113         self.__center=numarray.array(center,type=_TYPE)         self.__center=numarray.array(center,type=_TYPE)
114      def __call__(self,x=numarray.zeros((3,))):      def __call__(self,x=numarray.zeros((3,))):

Legend:
Removed from v.905  
changed lines
  Added in v.915

  ViewVC Help
Powered by ViewVC 1.1.26