from inkscape_helper.PathSegment import * class Line(PathSegment): def __init__(self, start, end): self.start = start self.end = end self.pp = lambda t : PathPoint(t, self.start + t * (self.end - self.start), self.end - self.start, 0, t * self.length) @property def length(self): return (self.end - self.start).r def subdivide(self, part_length, start_offset=0): # note: start_offset should be smaller than part_length nr_parts = int((self.length - start_offset) // part_length) k_o = start_offset / self.length k2t = lambda k : k_o + k * part_length / self.length points = [self.pp(k2t(k)) for k in range(nr_parts + 1)] return(points, self.length - points[-1].c_dist) def pathpoint_at_t(self, t): return self.pp(t) def t_at_length(self, length): return length / self.length