def points(self, num=10): l1 = self.undercut_points(num=num) l2 = self.involute_points(num=num) s = trimfunc(l1, l2[::-1]) if self.undercut: if isinstance(s, ndarray): u1, e1 = s else: u1, e1 = nearestpts(l2, l1) else: u1 = False if self.dg > self.df: u1 = vstack( [[l2[0] * self.df / (norm(l2[0], [0, 0]) * 2)], [l2[0]]]) e1 = l2 else: e1 = l2 reflect = reflection(0) e2 = reflect(e1)[::-1] if isinstance(u1, bool): u2 = False one_tooth = [e1, [e1[-1], e2[0]], e2] else: u2 = reflect(u1)[::-1] one_tooth = [u1, e1, [e1[-1], e2[0]], e2, u2] return(one_tooth)
def points(self, num = 10): inner_x = self.hypocycloide_x() inner_y = self.hypocycloide_y() outer_x = self.epicycloide_x() outer_y = self.epicycloide_y() t_inner_end = self.inner_end() t_outer_end = self.outer_end() t_vals_outer = linspace(0, t_outer_end, num) t_vals_inner = linspace(t_inner_end,0,num) pts_outer_x = map(outer_x, t_vals_outer) pts_outer_y = map(outer_y, t_vals_outer) pts_inner_x = map(inner_x, t_vals_inner) pts_inner_y = map(inner_y, t_vals_inner) pts_outer = transpose([pts_outer_x, pts_outer_y]) pts_inner = transpose([pts_inner_x, pts_inner_y]) pts1 = vstack([pts_inner[:-2],pts_outer]) rot =rotation(self.phipart / 4 - self.backlash) pts1 = rot(pts1) ref = reflection(0.) pts2 = ref(pts1)[::-1] one_tooth = [pts1,array([pts1[-1],pts2[0]]), pts2] return(one_tooth)