Beispiel #1
0
    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)
Beispiel #2
0
    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)