Example #1
0
 def points(self, num=10):
     pts = self.involute_points(num = num)
     rot = rotation3D(-pi/self.z/2)
     pts = rot(pts)
     ref = reflection3D(pi/2)
     pts1 = ref(pts)[::-1]
     rot = rotation3D(2*pi/self.z)
     pt3 = rot(pts[0])
     if self.add_foot:
         return(array([
             [pts[0],pts[1]],
             pts[1:],
             [pts[-1], pts1[0]],
             pts1[:-1],
             [pts1[-2], pts1[-1]]
             ]))
         return(array([pts,[pts[-1],pts1[0]], pts1]))
     else:
         return(array([pts,[pts[-1],pts1[0]], pts1]))
Example #2
0
 def involute_points(self, num=10):
     pts = linspace(self.involute_start, self.involute_end, num=num)
     fx = self.involute_function_x()
     x = array(map(fx, pts))
     fy = self.involute_function_y()
     y = array(map(fy, pts))
     fz = self.involute_function_z()
     z = array(map(fz, pts))
     xyz = transpose(array([x, y,z]))
     if self.add_foot:
         p = xyz[0]
         p1 =map(lambda x: x * (self.r_f / sqrt(p[0]**2 + p[1]**2)), p)
         p1[2] = self.z_f
         xyz=vstack([[p1], xyz])
     xy = [[i[0]/i[2],i[1]/i[2],1.] for i in xyz]
     backlash_rot = rotation3D(self.backlash / 4)
     xy = backlash_rot(xy)
     return(xy)