コード例 #1
0
 def test_small_to_large(self):
     c0 = aphex.Circle(x=160, y=450, r=30)
     c1 = aphex.Circle(x=500, y=100, r=65)
     result = aphex.tangent(c0, c1, aphex.RIGHT, aphex.RIGHT)
     expected = aphex.Segment(x0=179.96358510145777,
                              y0=472.3931969557018,
                              x1=543.2544343864918,
                              y1=148.51859340402063)
     self.assertEqual(result, expected)
コード例 #2
0
 def test_outer(self):
     c0 = aphex.Circle(0, 0, 4)
     c1 = aphex.Circle(5, 5, 3)
     result_ll = aphex.tangent(c0, c1, aphex.LEFT, aphex.LEFT)
     result_rr = aphex.tangent(c0, c1, aphex.RIGHT, aphex.RIGHT)
     expected_ll = aphex.Segment(3.2, -2.4, 7.4, 3.2)
     expected_rr = aphex.Segment(-2.4, 3.2, 3.2, 7.4)
     self.assertEqual(result_ll, expected_ll)
     self.assertEqual(result_rr, expected_rr)
コード例 #3
0
 def test_outer_same_r(self):
     c0 = aphex.Circle(0, 0, 2)
     c1 = aphex.Circle(5, 5, 2)
     result_ll = aphex.tangent(c0, c1, aphex.LEFT, aphex.LEFT)
     result_rr = aphex.tangent(c0, c1, aphex.RIGHT, aphex.RIGHT)
     expected_ll = aphex.Segment(1.414213562373095, -1.414213562373095,
                                 6.414213562373095, 3.585786437626905)
     expected_rr = aphex.Segment(-1.414213562373095, 1.414213562373095,
                                 3.585786437626905, 6.414213562373095)
     self.assertEqual(result_ll, expected_ll)
     self.assertEqual(result_rr, expected_rr)
コード例 #4
0
    def test_right_to_left(self):
        # c0 is bigger
        c0 = aphex.Circle(0, 0, 4)
        c1 = aphex.Circle(10, 0, 3)
        result_rl = aphex.tangent(c0, c1, aphex.RIGHT, aphex.LEFT)
        self.assertGreater(result_rl.y0, result_rl.y1)

        # c1 is bigger
        c0 = aphex.Circle(0, 0, 3)
        c1 = aphex.Circle(10, 0, 4)
        result_rl = aphex.tangent(c0, c1, aphex.RIGHT, aphex.LEFT)
        self.assertGreater(result_rl.y0, result_rl.y1)
コード例 #5
0
 def test_inner(self):
     c0 = aphex.Circle(0, 0, 4)
     c1 = aphex.Circle(5, 5, 3)
     result_lr = aphex.tangent(c0, c1, aphex.LEFT, aphex.RIGHT)
     result_rl = aphex.tangent(c0, c1, aphex.RIGHT, aphex.LEFT)
     expected_lr = aphex.Segment(
         3.2,
         2.4,
         2.600000000000001,
         3.1999999999999993,
     )
     expected_rl = aphex.Segment(2.4, 3.2, 3.1999999999999993,
                                 2.600000000000001)
     self.assertEqual(result_lr, expected_lr)
     self.assertEqual(result_rl, expected_rl)
コード例 #6
0
 def test_compute_center(self):
     tests = [
         ([
             aphex.Circle(0, 0, 4),
             aphex.Circle(5, 5, 3),
         ], (2.5, 2.5)),
         ([
             aphex.Circle(0, 0, 3),
             aphex.Circle(5, 5, 3),
             aphex.Circle(-5, -5, 3),
         ], (0, 0)),
         ([
             aphex.Circle(0, 0, 3),
             aphex.Circle(6, 5, 3),
             aphex.Circle(0, 1, 3),
         ], (2, 2)),
     ]
     for (circles, expected) in tests:
         self.assertEqual(aphex.compute_center(circles), expected)