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

revision 915 by gross, Thu Dec 14 06:12:53 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      """      """
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:

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