示例#1
0
    def get_vis_polygon(self, pos: Vec2, r: float, alpha: float,
                        thetta: float) -> PolyLine:
        n_rays = 10
        angles = np.linspace(-thetta + alpha, thetta + alpha, n_rays)
        p2s = [
            Vec2(r, 0).rotate(angle, degrees=True).add(pos) for angle in angles
        ]

        ps = [pos.copy()]
        for p2 in p2s:
            p1, pi = self.intersected_segment(pos, p2)
            ps.append(pi)
        return PolyLine(ps)
示例#2
0
 def intersected_segment(self, p1: Vec2, p2: Vec2) -> tuple:
     ps = [p2.copy()]
     for pl in self.obstacles:
         ps += pl.intersect_segment(p1, p2)
     ps = _sortreduce_by_distance(ps, p1)
     return (p1.copy(), ps[0])