Example #1
0
 def test_itersegments_oriented(self):
     r1 = Rectangle(0, 0, 5, 6)
     L = list(r1.itersegments_oriented())
     self.assertTrue(Segment(0, 0, 0, 6) in L)
     self.assertTrue(Segment(0, 6, 5, 6) in L)
     self.assertTrue(Segment(5, 6, 5, 0) in L)
     self.assertTrue(Segment(5, 0, 0, 0) in L)
Example #2
0
 def test_mapoverlay3(self):
     M1 = PlanarMap(Rectangle(0, 1, 3, 2))
     M2 = PlanarMap(Rectangle(1, 0, 2, 3))
     M3 = M1.map_overlay(M2)
     self.assertEqual(M3.v(), 12)
     self.assertEqual(M3.e(), 16)
     self.assertEqual(M3.f(), 6)
Example #3
0
 def test_mapoverlay2(self):
     M1 = PlanarMap(Rectangle(0, 0, 2, 2))
     M2 = PlanarMap(Rectangle(1, 1, 2, 3))
     M3 = M1.map_overlay(M2)
     self.assertEqual(M3.v(), 9)
     self.assertEqual(M3.e(), 11)
     self.assertEqual(M3.f(), 4)
Example #4
0
 def test_make4(self):
     r1 = Rectangle(0, 0, 2.5, 3)
     r2 = Rectangle(2.5, 3, 5, 6)
     r3 = Rectangle(0, 3, 2.5, 6)
     r4 = Rectangle(2.5, 0, 5, 3)
     result = self.r1.make4()
     self.assertTrue(r1 in result)
     self.assertTrue(r2 in result)
     self.assertTrue(r3 in result)
     self.assertTrue(r4 in result)
Example #5
0
 def test_make4_frac(self):
     r1 = Rectangle(0, 0, Fraction(5, 2), 3)
     r2 = Rectangle(Fraction(5, 2), 3, 5, 6)
     r3 = Rectangle(0, 3, Fraction(5, 2), 6)
     r4 = Rectangle(Fraction(5, 2), 0, 5, 3)
     result = self.r1.make4()
     self.assertTrue(r1 in result)
     self.assertTrue(r2 in result)
     self.assertTrue(r3 in result)
     self.assertTrue(r4 in result)
Example #6
0
 def test_query(self):
     p1 = Point(0.4, 0.4)
     p2 = Point(0.6, 0.6)
     self.qt1.insert(p1)
     self.qt1.insert(p2)
     result = self.qt1.query(Rectangle(0.0, 0.0, 0.2, 0.2))
     self.assertEqual(result, [])
     result = self.qt1.query(Rectangle(0.5, 0.5, 0.9, 0.9))
     self.assertEqual(result, [p2])
     result = self.qt1.query(Rectangle(0.3, 0.3, 0.7, 0.7))
     self.assertEqual(result, [p1, p2])
     result = self.qt1.query(Rectangle(1.0, 1.0, 2.0, 2.0))
     self.assertEqual(result, [])
Example #7
0
 def test_cmp(self):
     self.assertEqual(Rectangle(), Rectangle(0, 0, 1, 1))
     self.assertTrue(self.r1 == Rectangle(0, 0, 5, 6))
     self.assertFalse(self.r1 == self.r2)
     self.assertTrue(self.r1 != self.r2)
     self.assertFalse(self.r1 != Rectangle(0, 0, 5, 6))
     self.assertTrue(self.r1 < self.r2)
     self.assertFalse(self.r3 < self.r2)
     self.assertTrue(self.r1 <= self.r2)
     self.assertFalse(self.r3 <= self.r2)
     self.assertTrue(self.r3 > self.r1)
     self.assertFalse(self.r2 > self.r3)
     self.assertTrue(self.r3 >= self.r1)
     self.assertFalse(self.r2 >= self.r3)
Example #8
0
 def test_mapoverlay5(self):
     M1 = PlanarMap(Triangle(0, 0, 3, 1, 0, 2))
     M2 = PlanarMap(Rectangle(1, 0, 2, 2))
     M3 = M1.map_overlay(M2)
     self.assertEqual(M3.v(), 11)
     self.assertEqual(M3.e(), 15)
     self.assertEqual(M3.f(), 6)
Example #9
0
 def test_hash(self):
     aset = set()
     aset.add(self.r1)
     aset.add(self.r1)  # ignored
     aset.add(Rectangle(0.0, 0.0, 5.0, 6.0))  # ignored, float
     self.assertEqual(len(aset), 1)
     aset.add(self.r2)
     self.assertEqual(len(aset), 2)
Example #10
0
 def setUp(self):
     self.r1 = Rectangle(0, 0, 5, 6)
     self.r2 = Rectangle(3, 4, 7, 8)
     self.r3 = Rectangle(6, 7, 8, 8)
     self.r4 = Rectangle(Point(1, 2), Point(3, 4))
     self.r5 = Rectangle(Fraction(1, 2), Fraction(2, 3), Fraction(3, 4),
                         Fraction(4, 5))
Example #11
0
 def test_bounding_box(self):
     point_list = [Point(1, 0), Point(0, 1), Point(1, 2), Point(3, 1)]
     result = bounding_box(point_list)
     self.assertEqual(result, Rectangle(0, 0, 3, 2))
Example #12
0
#!/usr/bin/python

import random
import Gnuplot  # Python 2 only
from planegeometry.structures.points import Point
from planegeometry.structures.segments import Segment
from planegeometry.structures.rectangles import Rectangle
from planegeometry.structures.triangles import Triangle
from planegeometry.structures.circles import Circle

gnu = Gnuplot.Gnuplot(persist=1)

visible = True

rectangle = Rectangle(0.1, 0.3, 0.9, 0.7)
gnu(rectangle.gnu(visible))

triangle = Triangle(0.2, 0.2, 0.8, 0.4, 0.6, 0.8)
gnu(triangle.gnu(visible))

circle = Circle(0.4, 0.6, 0.2)
gnu(circle.gnu(visible))

# Wyswietlenie grafu.
gnu('set terminal pdf enhanced')
gnu('set output "random_figures.pdf"')
gnu('set grid')
gnu('unset key')
gnu('set size square')
#gnu('unset border')
#gnu('unset tics')
Example #13
0
 def test_intersection(self):
     r5 = self.r1.intersection(self.r2)
     self.assertEqual(r5, Rectangle(3, 4, 5, 6))
     self.assertRaises(ValueError, Rectangle.intersection, self.r1, self.r3)
Example #14
0
 def setUp(self):
     self.qt1 = QuadTree(Rectangle(0, 0, 1, 1), 4)
Example #15
0
 def test_init_rectangle(self):
     M1 = PlanarMap(Rectangle(0, 0, 1, 2))
     self.assertEqual(M1.v(), 4)
     self.assertEqual(M1.e(), 4)
     self.assertEqual(M1.f(), 2)
Example #16
0
 def test_move(self):
     self.assertEqual(self.r1.move(1, 2), Rectangle(1, 2, 6, 8))
     self.assertEqual(self.r1.move(Point(1, 2)), Rectangle(1, 2, 6, 8))
     self.assertRaises(ValueError, Rectangle.move, self.r1, 1)
Example #17
0
#!/usr/bin/python

import random
import matplotlib.pyplot as plt
from planegeometry.structures.points import Point
from planegeometry.structures.segments import Segment
from planegeometry.structures.rectangles import Rectangle
from planegeometry.structures.triangles import Triangle
from planegeometry.structures.circles import Circle

plt.axis([0, 1, 0, 1])
ax = plt.gca()

rectangle1 = Rectangle(0.1, 0.3, 0.9, 0.7)
# rectangle1 = plt.Rectangle((0.1, 0.3), 0.8, 0.4, fill=False, color='b')
rectangle2 = plt.Rectangle((0.6, 0.1), 0.2, 0.1, fill=False, color='m')

for segment in rectangle1.itersegments():
    x = [segment.pt1.x, segment.pt2.x]
    y = [segment.pt1.y, segment.pt2.y]
    #plt.plot(x, y, 'bo-')
    plt.plot(x, y, 'b.-')

triangle1 = Triangle(0.2, 0.2, 0.8, 0.4, 0.6, 0.8)

for segment in triangle1.itersegments():
    x = [segment.pt1.x, segment.pt2.x]
    y = [segment.pt1.y, segment.pt2.y]
    #plt.plot(x, y, 'ro-')
    plt.plot(x, y, 'r.-')
Example #18
0
 def test_cover(self):
     r6 = self.r1.cover(self.r2)
     self.assertEqual(r6, Rectangle(0, 0, 7, 8))
Example #19
0
# 10       2
# 100      4
# 1000     6
# 10000    8
# 100000   10
# 1000000   12

import timeit
import random
from planegeometry.structures.points import Point
from planegeometry.structures.rectangles import Rectangle
from planegeometry.structures.quadtree import QuadTree

N = 100
plist = []
quadtree = QuadTree(Rectangle(0, 0, 1, 1))
for i in range(N):
    pt = Point(random.random(), random.random())
    plist.append(pt)
    quadtree.insert(pt)
point1 = Point(random.random(), random.random())
rectangle1 = Rectangle(0.1, 0.1, 0.2, 0.2)
print("height {}".format(quadtree.height()))


def find_nearest1(point_list, point):
    """Szukanie punktu na liscie najblizszego danemu."""
    return min(point_list, key=lambda pt: (point - pt).length())


def find_nearest2(point_list, point):  # 2 times slower!
Example #20
0
class TestRectangle(unittest.TestCase):
    def setUp(self):
        self.r1 = Rectangle(0, 0, 5, 6)
        self.r2 = Rectangle(3, 4, 7, 8)
        self.r3 = Rectangle(6, 7, 8, 8)
        self.r4 = Rectangle(Point(1, 2), Point(3, 4))
        self.r5 = Rectangle(Fraction(1, 2), Fraction(2, 3), Fraction(3, 4),
                            Fraction(4, 5))

    def test_init(self):
        self.assertRaises(ValueError, Rectangle, 0, 4, -1, 6)
        self.assertRaises(ValueError, Rectangle, 0, 4, 2, 2)
        self.assertRaises(ValueError, Rectangle, 0, 0, 2)
        self.assertRaises(ValueError, Rectangle, 1, 2)
        self.assertRaises(ValueError, Rectangle, Point(1, 1), 2)
        self.assertRaises(ValueError, Rectangle, 1, Point(2, 2))
        self.assertEqual(self.r1.pt1, Point(0, 0))
        self.assertEqual(self.r1.pt2, Point(5, 6))
        self.assertEqual(self.r4.pt1, Point(1, 2))
        self.assertEqual(self.r4.pt2, Point(3, 4))

    def test_print(self):
        self.assertEqual(repr(self.r1), "Rectangle(0, 0, 5, 6)")
        self.assertEqual(repr(self.r2), "Rectangle(3, 4, 7, 8)")
        self.assertEqual(repr(self.r3), "Rectangle(6, 7, 8, 8)")
        self.assertEqual(repr(self.r4), "Rectangle(1, 2, 3, 4)")
        self.assertEqual(
            repr(self.r5),
            "Rectangle(Fraction(1, 2), Fraction(2, 3), Fraction(3, 4), Fraction(4, 5))"
        )

    def test_cmp(self):
        self.assertEqual(Rectangle(), Rectangle(0, 0, 1, 1))
        self.assertTrue(self.r1 == Rectangle(0, 0, 5, 6))
        self.assertFalse(self.r1 == self.r2)
        self.assertTrue(self.r1 != self.r2)
        self.assertFalse(self.r1 != Rectangle(0, 0, 5, 6))
        self.assertTrue(self.r1 < self.r2)
        self.assertFalse(self.r3 < self.r2)
        self.assertTrue(self.r1 <= self.r2)
        self.assertFalse(self.r3 <= self.r2)
        self.assertTrue(self.r3 > self.r1)
        self.assertFalse(self.r2 > self.r3)
        self.assertTrue(self.r3 >= self.r1)
        self.assertFalse(self.r2 >= self.r3)

    def test_copy(self):
        r4 = self.r1.copy()
        self.assertEqual(r4, self.r1)
        self.assertNotEqual(id(r4), id(self.r1))

    def test_center(self):
        self.assertEqual(self.r1.center(), Point(2.5, 3))
        self.assertEqual(self.r2.center(), Point(5, 6))

    def test_area(self):
        self.assertEqual(self.r1.area(), 30)
        self.assertEqual(self.r2.area(), 16)

    def test_move(self):
        self.assertEqual(self.r1.move(1, 2), Rectangle(1, 2, 6, 8))
        self.assertEqual(self.r1.move(Point(1, 2)), Rectangle(1, 2, 6, 8))
        self.assertRaises(ValueError, Rectangle.move, self.r1, 1)

    def test_intersection(self):
        r5 = self.r1.intersection(self.r2)
        self.assertEqual(r5, Rectangle(3, 4, 5, 6))
        self.assertRaises(ValueError, Rectangle.intersection, self.r1, self.r3)

    def test_cover(self):
        r6 = self.r1.cover(self.r2)
        self.assertEqual(r6, Rectangle(0, 0, 7, 8))

    def test_make4(self):
        r1 = Rectangle(0, 0, 2.5, 3)
        r2 = Rectangle(2.5, 3, 5, 6)
        r3 = Rectangle(0, 3, 2.5, 6)
        r4 = Rectangle(2.5, 0, 5, 3)
        result = self.r1.make4()
        self.assertTrue(r1 in result)
        self.assertTrue(r2 in result)
        self.assertTrue(r3 in result)
        self.assertTrue(r4 in result)

    def test_make4_frac(self):
        r1 = Rectangle(0, 0, Fraction(5, 2), 3)
        r2 = Rectangle(Fraction(5, 2), 3, 5, 6)
        r3 = Rectangle(0, 3, Fraction(5, 2), 6)
        r4 = Rectangle(Fraction(5, 2), 0, 5, 3)
        result = self.r1.make4()
        self.assertTrue(r1 in result)
        self.assertTrue(r2 in result)
        self.assertTrue(r3 in result)
        self.assertTrue(r4 in result)

    def test_hash(self):
        aset = set()
        aset.add(self.r1)
        aset.add(self.r1)  # ignored
        aset.add(Rectangle(0.0, 0.0, 5.0, 6.0))  # ignored, float
        self.assertEqual(len(aset), 1)
        aset.add(self.r2)
        self.assertEqual(len(aset), 2)

    def test_contains(self):
        self.assertTrue(Point(1, 1) in self.r1)
        self.assertFalse(Point(1, 7) in self.r1)
        self.assertFalse(Point(7, 1) in self.r1)
        self.assertRaises(ValueError, Rectangle.__contains__, self.r1, 1)
        # segment in rectangle
        self.assertTrue(Segment(1, 1, 2, 2) in self.r1)
        self.assertFalse(Segment(1, 1, 7, 7) in self.r1)

    def test_is_square(self):
        self.assertTrue(self.r2.is_square())
        self.assertFalse(self.r1.is_square())

    def test_iterpoints(self):
        L = list(self.r1.iterpoints())
        self.assertEqual(L[0], Point(0, 0))
        self.assertEqual(L[1], Point(5, 0))
        self.assertEqual(L[2], Point(5, 6))
        self.assertEqual(L[3], Point(0, 6))

    def test_itersegments(self):
        r1 = Rectangle(0, 0, 5, 6)
        L = list(r1.itersegments())
        self.assertTrue(Segment(0, 0, 5, 0) in L)
        self.assertTrue(Segment(0, 0, 0, 6) in L)
        self.assertTrue(Segment(0, 6, 5, 6) in L)
        self.assertTrue(Segment(5, 0, 5, 6) in L)

    def test_itersegments_oriented(self):
        r1 = Rectangle(0, 0, 5, 6)
        L = list(r1.itersegments_oriented())
        self.assertTrue(Segment(0, 0, 0, 6) in L)
        self.assertTrue(Segment(0, 6, 5, 6) in L)
        self.assertTrue(Segment(5, 6, 5, 0) in L)
        self.assertTrue(Segment(5, 0, 0, 0) in L)

    def test_gnu(self):
        s1 = 'set label "" at 0.0,0.0 point pt 7 ps 0.5\n'
        s2 = 'set label "" at 5.0,6.0 point pt 7 ps 0.5\n'
        s3 = 'set label "" at 0.0,6.0 point pt 7 ps 0.5\n'
        s4 = 'set label "" at 5.0,0.0 point pt 7 ps 0.5\n'
        s5 = 'set object rectangle from 0.0,0.0 to 5.0,6.0 fs empty\n'
        self.assertEqual(self.r1.gnu(True), s1 + s2 + s3 + s4 + s5)

    def test_bounding_box(self):
        point_list = [Point(1, 0), Point(0, 1), Point(1, 2), Point(3, 1)]
        result = bounding_box(point_list)
        self.assertEqual(result, Rectangle(0, 0, 3, 2))

    def tearDown(self):
        pass
Example #21
0
#!/usr/bin/python

import timeit
import random
from planegeometry.structures.points import Point
from planegeometry.structures.rectangles import Rectangle
from planegeometry.structures.quadtree import QuadTree

N = 100
quadtree = QuadTree(Rectangle(0, 0, 1, 1))
for i in range(N):
    pt = Point(random.random(), random.random())
    quadtree.insert(pt)
point1 = Point(random.random(), random.random())
print("height {}".format(quadtree.height()))

print("Testing QuadTree.insert() ...")
t1 = timeit.Timer(lambda: quadtree.insert(point1))
print("{} {}".format(N, t1.timeit(1)))  # single run

# EOF