/[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 910 by gross, Fri Nov 24 10:04:09 2006 UTC revision 916 by gross, Fri Dec 15 08:25:57 2006 UTC
# Line 61  class Rotatation(Transformation): Line 61  class Rotatation(Transformation):
61      """      """
62      defines a rotation      defines a rotation
63      """      """
64      def __init__(self,point0=numarray.zeros((3,),type=_TYPE),point1=numarray.ones((3,),type=_TYPE),angle=0.*RAD):      def __init__(self,axis=numarray.zeros((3,),type=_TYPE),point=numarray.ones((3,),type=_TYPE),angle=0.*RAD):
65         """         """
66         creates a rotation using to points to define the axis and a rotation angle         creates a rotation using an axis and a point on the axis
67         """         """
68         self.__point0=numarray.array(point0,type=_TYPE)         self.__axis=numarray.array(axis,type=_TYPE)
69         self.__point1=numarray.array(point1,type=_TYPE)         self.__point=numarray.array(point,type=_TYPE)
        self.__axis=self.__point1-self.__point0  
70         lax=numarray.dot(self.__axis,self.__axis)         lax=numarray.dot(self.__axis,self.__axis)
71         if not lax>0:         if not lax>0:
72            raise ValueError("points must be distinct.")            raise ValueError("points must be distinct.")
# Line 78  class Rotatation(Transformation): Line 77  class Rotatation(Transformation):
77         applies rotatation to x         applies rotatation to x
78         """         """
79         x=numarray.array(x,_TYPE)         x=numarray.array(x,_TYPE)
80         z=x-self.__point0         z=x-self.__point
81         z0=numarray.dot(z,self.__axis)         z0=numarray.dot(z,self.__axis)
82         z_per=z-z0*self.__axis         z_per=z-z0*self.__axis
83         lz_per=numarray.dot(z_per,z_per)         lz_per=numarray.dot(z_per,z_per)
# Line 88  class Rotatation(Transformation): Line 87  class Rotatation(Transformation):
87           lax2=numarray.dot(axis2,axis2)           lax2=numarray.dot(axis2,axis2)
88           if lax2>0:           if lax2>0:
89              axis2/=math.sqrt(lax2)              axis2/=math.sqrt(lax2)
90              return z0*self.__axis+math.sqrt(lz_per)*(math.cos(self.__angle)*axis1-math.sin(self.__angle)*axis2)+self.__point0              return z0*self.__axis+math.sqrt(lz_per)*(math.cos(self.__angle)*axis1-math.sin(self.__angle)*axis2)+self.__point
91           else:           else:
92              return x              return x
93         else:         else:
# Line 107  class Dilation(Transformation): Line 106  class Dilation(Transformation):
106         """         """
107         creates a dilation with a center an a given expansion/contraction factor         creates a dilation with a center an a given expansion/contraction factor
108         """         """
109         if not factor>0:         if not abs(factor)>0:
110            raise ValueError("factor must be positive.")            raise ValueError("factor must be non-zero.")
111         self.__factor=factor         self.__factor=factor
112         self.__center=numarray.array(center,type=_TYPE)         self.__center=numarray.array(center,type=_TYPE)
113      def __call__(self,x=numarray.zeros((3,))):      def __call__(self,x=numarray.zeros((3,))):

Legend:
Removed from v.910  
changed lines
  Added in v.916

  ViewVC Help
Powered by ViewVC 1.1.26