Exemplo n.º 1
0
    def test_estimate_curve_length_horizontal(self):
        for t in [0.2, 0.4, 0.6, 0.8]:
            curve = BezierCurve(start_point=np.array([0, 0]),
                                control_point=t * np.array([100, 0]),
                                end_point=np.array([100, 0]))

            self.assertAlmostEqual(curve.estimate_curve_length(), 100, 3)
Exemplo n.º 2
0
    def test_get_parametrized_point_random_points(self):
        curve = BezierCurve(start_point=np.array([0, 0]),
                            control_point=np.array([50, 50]),
                            end_point=np.array([100, 100]))

        for t in [0.2, 0.4, 0.6, 0.8]:
            self._compare_points(curve.get_parametrized_point(t),
                                 np.array([100 * t, 100 * t]))
Exemplo n.º 3
0
    def test_find_parameter_t_diagonal(self):
        curve = BezierCurve(start_point=np.array([0, 0]),
                            control_point=np.array([50, 50]),
                            end_point=np.array([100, 100]))

        for t in [0.2, 0.4, 0.6, 0.8]:
            self.assertAlmostEqual(
                curve.find_parameter_t(t * np.sqrt(2) * 100), t, 3)
Exemplo n.º 4
0
 def test_estimate_curve_length_not_mid_points(self):
     for t1 in [0.2, 0.4]:
         for t2 in [0.6, 0.8]:
             curve = BezierCurve(start_point=np.array([0, 0]),
                                 control_point=np.array([50, 50]),
                                 end_point=np.array([100, 100]))
             self.assertAlmostEqual(
                 curve.estimate_curve_length(start_t=t1, end_t=t2),
                 (t2 - t1) * 100 * np.sqrt(2), 3)
Exemplo n.º 5
0
    def test_split_curve_equally_horizontal_line(self):
        for t in [0.2, 0.4, 0.6, 0.8]:
            curve = BezierCurve(start_point=np.array([0, 0]),
                                control_point=t * np.array([0, 101]),
                                end_point=np.array([0, 101]))

            ans = np.array([[0, i] for i in range(101, 5)])
            res = curve.split_curve_equally(5)
            for idx in range(len(ans)):
                self._compare_points(ans[idx], res[idx])
Exemplo n.º 6
0
    def test_get_parametrized_point_control_point(self):
        start = np.array([10, 10])
        end = np.array([80, 20])
        control = (start + end) / 2

        curve = BezierCurve(start_point=start,
                            control_point=control,
                            end_point=end)

        self._compare_points(curve.control_point,
                             curve.get_parametrized_point(0.5))
Exemplo n.º 7
0
    def test_find_parameter_t_integration(self):
        curve = BezierCurve(start_point=np.array([10, 30]),
                            end_point=np.array([40, 60]),
                            control_point=np.array([100, 20]))

        for t in [0.2, 0.4, 0.6, 0.8]:
            start_t = 0.1
            end_t = 0.1 + t
            self.assertAlmostEqual(curve.find_parameter_t(
                curve.estimate_curve_length(start_t=start_t, end_t=end_t),
                start_t=start_t),
                                   end_t,
                                   places=3)
Exemplo n.º 8
0
def get_points_from_GUI(start_point, end_point, control_point, width, height, cacheLoc):
  real_start_point = start_point * np.array([width/100, height/100])
  real_control_point = control_point * np.array([width/100, height/100])
  real_end_point = end_point * np.array([width/100, height/100])
  curve_segment_length = 1

  curve = BezierCurve(
    start_point = real_start_point,
    control_point = real_control_point,
    end_point = real_end_point
  )

  if cacheLoc is not None:
    return curve.split_curve_equally_with_cache(curve_segment_length, cacheLoc)
  else:
    return curve.split_curve_equally(curve_segment_length)
Exemplo n.º 9
0
 def test_get_parametrized_point_end_point(self):
     curve = BezierCurve(start_point=np.array([30, 30]),
                         end_point=np.array([40, 20]),
                         control_point=np.array([10, 10]))
     self._compare_points(curve.end_point, curve.get_parametrized_point(1))