Пример #1
0
 def test_circle(self):
     # counter-clockwise
     arc = Arc(Point(1, 0), 90, 1, 10)
     self.assertAlmostEqual(arc.circle(), Circle(Point(0, 0), 1))
     # clockwise
     arc = Arc(Point(1, 0), 90, 1, -45)
     self.assertAlmostEqual(arc.circle(), Circle(Point(2, 0), 1))
Пример #2
0
 def points_at_linear_offset(self, reference_point, offset):
     circle1 = Circle(self.center_point(), self.radius())
     circle2 = Circle(reference_point, abs(offset))
     intersections = circle1.intersection(circle2)
     if circle1.almost_equal_to(circle2):
         return [self]
     return filter(lambda point: self.includes_point(point), intersections)
Пример #3
0
 def test_from_points_in_circle(self):
     # with start_point = end_point
     circle = Circle(Point(0, 0), 1)
     point = Point(1, 0)
     arc = Arc.from_points_in_circle(point, point, circle)
     self.assertEqual(arc, Arc(point, 90, 1, 0))
     # with start point different to end point
     circle = Circle(Point(5, 5), 1)
     start_point = Point(6, 5)
     end_point = Point(5, 6)
     arc = Arc.from_points_in_circle(start_point, end_point, circle)
     self.assertEqual(arc, Arc(start_point, 90, 1, 90))
     # in the lower half-plane
     circle = Circle(Point(0, 0), 1)
     start_point = Point(0, -1)
     end_point = Point(1, 0)
     expected_arc = Arc(Point(0, -1), 0, 1, 90)
     self.assertEqual(
         Arc.from_points_in_circle(start_point, end_point, circle),
         expected_arc)
     # with angular length greater than 180
     circle = Circle(Point(0, 0), 1)
     start_point = Point(1, 0)
     end_point = Point(0, -1)
     arc = Arc.from_points_in_circle(start_point, end_point, circle)
     self.assertEqual(arc, Arc(start_point, 90, 1, 270))
    def test_instance_variables(self):
        circleWithNoCoordinatesGiven = Circle(6)
        self.assertEqual(circleWithNoCoordinatesGiven._radius, 6)
        self.assertEqual(circleWithNoCoordinatesGiven._x, 0)
        self.assertEqual(circleWithNoCoordinatesGiven._y, 0)

        circleWithCoordinatesGiven = Circle(7, {'x': 11, 'y': 22})
        self.assertEqual(circleWithCoordinatesGiven._radius, 7)
        self.assertEqual(circleWithCoordinatesGiven._x, 11)
        self.assertEqual(circleWithCoordinatesGiven._y, 22)
Пример #5
0
 def test_intersection_at_one_point_with_not_nested_circles(self):
     circle1 = Circle(Point(0, 0), 2)
     circle2 = Circle(Point(3, 0), 1)
     self.assertEqual(circle1.intersection(circle2), [Point(2, 0)])
     circle1 = Circle(Point(0, 0), 2)
     circle2 = Circle(Point(0, 3), 1)
     self.assertEqual(circle1.intersection(circle2), [Point(0, 2)])
Пример #6
0
 def test_intersection_at_one_point_in_nested_circles(self):
     circle1 = Circle(Point(0, 0), 4)
     circle2 = Circle(Point(2, 0), 2)
     self.assertEqual(circle1.intersection(circle2), [Point(4, 0)])
     circle1 = Circle(Point(0, 0), 4)
     circle2 = Circle(Point(0, 2), 2)
     self.assertEqual(circle1.intersection(circle2), [Point(0, 4)])
Пример #7
0
 def test_intersection_with_circles_that_do_not_intersect(self):
     # with not nested circles
     circle1 = Circle(Point(0, 0), 2)
     circle2 = Circle(Point(6, 6), 3)
     self.assertEqual(circle1.intersection(circle2), [])
     # with nested circles
     circle3 = Circle(Point(0, 0), 4)
     circle4 = Circle(Point(2, 0), 1)
     self.assertEqual(circle3.intersection(circle4), [])
Пример #8
0
class TestCircle(TestCase):
    def setUp(self):
        """Set up a new object to be tested"""
        dia = 65.0
        self.c = Circle(dia)

    def tearDown(self):
        """Destroy the object after running tests"""
        del self.c

    def test_area(self):
        area = math.pi * 65**2 / 4
        self.assertEqual(self.c.area(), area)
Пример #9
0
    def _create_lane_intersections(self, radius, lane_pairs, strict=True):
        intersections = OrderedDict()
        mapped_intersection_center = self.mapped_intersection_center()
        intersection_center = self.intersection_center()
        circle = Circle(intersection_center, radius)
        node = self._road_node
        for lane in self.lanes():
            path = lane.path_for(self._geometry_class)
            path_intersections = path.find_intersection(circle)

            indexed_intersections = OrderedDict()
            for intersection in path_intersections:
                point = intersection.closest_point_to(
                    mapped_intersection_center)
                rounded_point = point.rounded_to(7)
                indexed_intersections[rounded_point] = point
            path_intersections = indexed_intersections.values()
            intersections[lane] = self._get_waypoints_for_intersections(
                lane, path_intersections)

        for (exit_lane, entry_lane) in lane_pairs.keys():
            exit_waypoint = None
            entry_waypoint = None
            try:
                exit_waypoint = self._get_exit_waypoint_from_intersections(
                    intersections[exit_lane])
                entry_waypoint = self._get_entry_waypoint_from_intersections(
                    intersections[entry_lane])
            # TODO: Improve this way of handling errors
            except RuntimeError as error:
                if strict:
                    raise JunctionNotSatisfied()

            if exit_waypoint and entry_waypoint:

                if exit_waypoint.center().almost_equal_to(
                        entry_waypoint.center(), 5):
                    raise JunctionNotSatisfied()

                primitive = self._geometry_class.connect(
                    exit_waypoint, entry_waypoint)

                if strict and (not primitive
                               or not primitive.is_valid_path_connection()):
                    raise JunctionNotSatisfied()

                if primitive:
                    lane_pairs[(exit_lane, entry_lane)] = WaypointConnection(
                        exit_waypoint, entry_waypoint, primitive)

        return lane_pairs
Пример #10
0
    def _is_legal_segment(self, triangle, segment):
        if segment in self._base_triangle.segments:
            return True

        point_i = segment.start
        point_j = segment.end
        point_l = triangle.last_points([point_i, point_j])[0]
        near_triangle = triangle.get_near_triangle_by_segment(segment)
        point_k = near_triangle.last_points([point_i, point_j])[0]

        ind_i = self._point_index(point_i)
        ind_j = self._point_index(point_j)
        ind_l = self._point_index(point_l)
        ind_k = self._point_index(point_k)

        # circle = Circle(point_a=point_i, point_b=point_j, point_c=point_l)
        # return point_k not in circle

        if ind_i > 0 and ind_j > 0 and ind_k > 0 and ind_l > 0:
            circle = Circle(point_a=point_i, point_b=point_j, point_c=point_l)
            return point_k in circle

        return min(ind_l, ind_k) < min(ind_i, ind_j)
def circleArea():
    circArea = Circle(5)
    result = circArea.circle_area()
    return 'Luas lingkaran jika jari-jari = 5 adalah ' + str(result)
 def test_x(self):
     circle = Circle(1, {'x': 8, 'y': 4})
     self.assertEqual(circle.x(), 8)
Пример #13
0
 def test_intersection_at_two_points(self):
     # with circles with centers at different x and different y
     circle1 = Circle(Point(0, 0), 1)
     circle2 = Circle(Point(1, 1), 1)
     self.assertEqual(circle1.intersection(circle2),
                      [Point(1, 0), Point(0, 1)])
     # with each center outside the other circle
     circle1 = Circle(Point(-3, 0), 5)
     circle2 = Circle(Point(3, 0), 5)
     self.assertEqual(circle1.intersection(circle2),
                      [Point(0, 4), Point(0, -4)])
     circle1 = Circle(Point(0, -3), 5)
     circle2 = Circle(Point(0, 3), 5)
     self.assertEqual(circle1.intersection(circle2),
                      [Point(4, 0), Point(-4, 0)])
     # with each's center inside the other circle
     circle1 = Circle(Point(0, 0), math.sqrt(65))
     circle2 = Circle(Point(4, 0), 5)
     self.assertAlmostEqual(
         circle1.intersection(circle2),
         [Point(7.0, 4.0, 0.0), Point(7.0, -4.0, 0.0)])
     circle1 = Circle(Point(0, 0), math.sqrt(65))
     circle2 = Circle(Point(0, 4), 5)
     self.assertAlmostEqual(
         circle1.intersection(circle2),
         [Point(4.0, 7.0, 0.0), Point(-4.0, 7.0, 0.0)])
     # with one center inside the other circle and the line that contains both intersection points containing one circle's center
     circle1 = Circle(Point(0, 0), 5)
     circle2 = Circle(Point(-4, 0), 3)
     self.assertAlmostEqual(circle1.intersection(circle2),
                            [Point(-4, 3), Point(-4, -3)])
     circle1 = Circle(Point(0, 0), 5)
     circle2 = Circle(Point(0, -4), 3)
     self.assertAlmostEqual(circle1.intersection(circle2),
                            [Point(3, -4), Point(-3, -4)])
     # with each's center inside the other circle and the line that contains both intersection points separating both centers
     circle1 = Circle(Point(0, 0), 3)
     circle2 = Circle(Point(2, 0), 3)
     self.assertAlmostEqual(
         circle1.intersection(circle2),
         [Point(1, math.sqrt(8)),
          Point(1, -math.sqrt(8))])
     # with one center in the perimeter of the other circle
     circle1 = Circle(Point(0, 0), 1)
     circle2 = Circle(Point(1, 0), 1)
     self.assertAlmostEqual(circle1.intersection(circle2), [
         Point(1.0 / 2, math.sqrt(3.0 / 4)),
         Point(1.0 / 2, -math.sqrt(3.0 / 4))
     ])
     circle1 = Circle(Point(0, 0), 1)
     circle2 = Circle(Point(0, 1), 1)
     self.assertAlmostEqual(circle1.intersection(circle2), [
         Point(math.sqrt(3.0 / 4), 1.0 / 2),
         Point(-math.sqrt(3.0 / 4), 1.0 / 2)
     ])
 def test_y(self):
     circle = Circle(1, {'x': 7, 'y': 3})
     self.assertEqual(circle.y(), 3)
 def test_diameter(self):
     circle = Circle(13)
     self.assertEqual(circle.diameter(), 26)
Пример #16
0
 def test_intersection_with_concentric_circles(self):
     circle1 = Circle(Point(3, 3), 6)
     circle2 = Circle(Point(3, 3), 8)
     self.assertEqual(circle1.intersection(circle2), [])
Пример #17
0
 def test_intersection_between_equal_circles(self):
     circle = Circle(Point(45, 7), 9)
     self.assertEqual(circle.intersection(circle), [circle])
Пример #18
0
 def circle(self):
     return Circle(self.center_point(), self.radius())
 def test_area(self):
     circle = Circle(2)
     # area = pi * (2 ** 2) = ~12.57
     self.assertEqual(round(circle.area(), 2), 12.57)
Пример #20
0
# # square = Square(point, 3)
# # print (square.getArea())
#
# print (listOfQuadrangles)
#
# sum = 0
# for quadrangle in listOfQuadrangles:
#     try:
#         sum += quadrangle.getPerimetr()
#     except NotImplementedError:
#         print ("Broken Quadrangle")

# print (sum)

# quadranglesCollection = QuadranglesCollection([
#     Rectangle(Point(0, 0), 6, 3),
#     Rectangle(Point(1, 1), 3, 4),
#     Rectangle(Point(2, 2), 4, 5)
# ])
#
# print (quadranglesCollection.getTheWidest().getPoint().getX())
# print (quadranglesCollection.getTheHighest().getPoint().getX())

circlesCollection = CirclesCollection(
    [Circle(Point(0, 0), 6),
     Circle(Point(1, 1), 3),
     Circle(Point(2, 2), 4)])

print(circlesCollection.getTheWidest().getPoint().getX())
print(circlesCollection.getTheHighest().getPoint().getX())
 def test_radius(self):
     circle = Circle(2)
     self.assertEqual(circle.radius(), 2)
Пример #22
0
 def setUp(self):
     """Set up a new object to be tested"""
     dia = 65.0
     self.c = Circle(dia)
 def test_perimeter(self):
     circle = Circle(3)
     # perimeter = 2 * pi * 3 = ~18.85
     self.assertEqual(round(circle.perimeter(), 2), 18.85)
 def test_init(self):
     circle = Circle(5)
     self.assertIsInstance(circle, Circle)