def test_waypoint_visualization_with_ngon_generator_predicted_human(self):
        # initialize the drone state
        waypoint_generator = NGonWaypointGenerator(n=6, radius=4)
        gamma = 0.9
        cinematic_controller = CinematicController(
            waypoint_generator=waypoint_generator, bb_filter_gamma=gamma)
        cinematic_controller.update_latest_drone_state(DroneState(x=2, y=-3))
        cinematic_controller.person_predictor = PolynomialPredictor(
            poly_degree=2, weight_decay_factor=1)
        cinematic_controller.update_latest_bbs([BoundingBox((10, 10), (0, 0))])
        time.sleep(.001)
        cinematic_controller.update_latest_bbs([BoundingBox((5, 5), (50, 0))])
        time.sleep(.001)
        cinematic_controller.update_latest_bbs([BoundingBox((2, 2), (50, 0))])
        time.sleep(.001)
        cinematic_controller.update_latest_bbs([BoundingBox((1, 1), (50, 0))])

        # initialize the drone waypoints
        waypoints = cinematic_controller.generate_waypoints()

        # initialize the person state
        person_states = cinematic_controller.person_predictor.predict_next_person_state(
            [2, 4, 6, 8, 10, 15, 20, 25, 30])

        # initialize the environment
        environment = Environment()
        environment.add_obstacles([[(6, 0), (4, 2), (6, 2)],
                                   [(8, -4), (9, -3), (10, -3), (10, -5),
                                    (9, -3.5)], [(-6, -2), (-1, -5),
                                                 (-1, -2)]])

        # initialize visualization object and plot
        viz = WaypointVisualization(waypoints, person_states, environment)
        viz.plot('plots/moving_target.png')
    def test_waypoint_visualization_with_ngon_generator(self):
        # initialize the drone state
        waypoint_generator = NGonWaypointGenerator(n=6, radius=4)
        gamma = 0.9
        cinematic_controller = CinematicController(
            waypoint_generator=waypoint_generator, bb_filter_gamma=gamma)
        cinematic_controller.update_latest_drone_state(origin_drone_state)
        cinematic_controller.update_latest_bbs([bb_10_10_0_0])

        # initialize the drone waypoints
        waypoints = cinematic_controller.generate_waypoints()

        # initialize the person state
        person_state = PersonState(4, 0)

        # initialize the environment
        environment = Environment()
        environment.add_obstacles([[(6, 0), (4, 2), (6, 2)],
                                   [(7, -4), (8, -3), (9, -3), (9, -5),
                                    (8, -3.5)], [(-5, -2), (0, -5), (0, -2)]])

        # initialize visualization object and plot
        viz = WaypointVisualization(waypoints, [person_state], environment)
        viz.plot('plots/test_waypoint_visualization_with_ngon_generator.png')

        # check that file was saved properly
        assert os.path.isfile(
            'plots/test_waypoint_visualization_with_ngon_generator.png')