Exemple #1
0
def test_rotate_180():
    vertex = ((1, 2), (2, 2.5), (3, 2))
    vertex_180 = ((3.0, 2.33333), (2.0, 1.83333), (1.0, 2.33333))

    v_180 = Vertex(vertex).rotate_180()
    v_0 = Vertex(v_180).rotate_180()

    assert v_180 == vertex_180
    assert v_0 == vertex
Exemple #2
0
def test_translate():
    rectangle = ((1, 1), (3, 1), (3, 3), (1, 3))
    new_x1_y1 = (4, 4)

    v_translated = Vertex(rectangle).translate(new_x1_y1)

    assert v_translated[0] == new_x1_y1
Exemple #3
0
def test_delete_entirely():
    plan = DemiPlan()
    T1 = np.array(((1, 2), (2, 2.5), (3, 2)))
    T1_translated = Vertex(T1).translate((5, 5))
    plan.insert_polygone(T1)
    plan.insert_polygone(T1_translated)
    plan.delete_entirely(T1)
    col = {}
    assert check_collection_equals(col, plan.get_collection()) is True
Exemple #4
0
def test_move_polygone():
    plan = DemiPlan()
    T1 = np.array(((1, 1), (1, 2), (1, 3)))
    plan.insert_polygone(T1)
    plan.move_polygone(T1, (6, 6))

    plan2 = DemiPlan()
    plan2.insert_polygone(Vertex(T1).translate((6, 6)))
    assert check_collection_equals(plan2.get_collection(),
                                   plan.get_collection()) is True
Exemple #5
0
def test_delete_polygone():
    plan = DemiPlan()
    T1 = np.array(((1, 2), (2, 2.5), (3, 2)))
    T1_translated = Vertex(T1).translate((5, 5))
    plan.insert_polygone(T1)
    plan.insert_polygone(T1_translated)
    plan.delete_polygone(T1)
    col = {
        3: [
            np.array([[[5., 5.], [6., 5.5], [7., 5.]]]),
            np.array([[[0., 0.], [1., 0.5], [2., 0.]]])
        ]
    }
    assert check_collection_equals(col, plan.get_collection()) is True
Exemple #6
0
def test_replace():
    plan = DemiPlan()
    T1 = np.array(((1, 2), (2, 2.5), (3, 2)))
    T1_translated = Vertex(T1).translate((5, 5))
    T3 = np.array(((1, 2), (2, 2.5), (9, 9)))
    plan.insert_polygone(T1)
    plan.insert_polygone(T1_translated)
    plan.replace(T1, T3)
    col = {
        3: [
            np.array([[[1., 2.], [2., 2.5], [9., 9.]],
                      [[5., 5.], [6., 5.5], [13., 12.]]]),
            np.array([[[0., 0.], [1., 0.5], [8., 7.]],
                      [[0., 0.], [1., 0.5], [8., 7.]]])
        ]
    }
    assert check_collection_equals(col, plan.get_collection()) is True
Exemple #7
0
def get_list_polygones(polygone, n):
    res = [polygone]
    for i in range(n - 1):
        res.append(Vertex(res[-1]).translate((i + 2, i + 2)))
    return res
Exemple #8
0
def test_insert_polygone():
    plan = DemiPlan()

    T1 = np.array(((1, 2), (2, 2.5), (3, 2)))

    col1 = {
        3: [
            np.array([[[1., 2.], [2., 2.5], [3., 2.]]]),
            np.array([[[0., 0.], [1., 0.5], [2., 0.]]])
        ]
    }

    plan.insert_polygone(T1)
    # Vérifions que T1 a bien été ajouté à la collection :
    assert check_collection_equals(col1, plan.get_collection()) is True

    # Vérifions que T1 n'a pas été ajouté deux fois :
    plan.insert_polygone(T1)
    assert check_collection_equals(col1, plan.get_collection()) is True

    # Vérifions que T2 a été ajouté dans l'ordre (après T1)
    T2 = np.array(((1, 9.52), (2, 3), (3.94, 2)))
    plan.insert_polygone(T2)

    col2 = {
        3: [
            np.array([[[1., 2.], [2., 2.5], [3., 2.]],
                      [[3.94, 2.], [1., 9.52], [2., 3.]]]),
            np.array([[[0., 0.], [1., 0.5], [2., 0.]],
                      [[0., 0.], [-2.94, 7.52], [-1.94, 1.]]])
        ]
    }

    assert check_collection_equals(col2, plan.get_collection()) is True

    plan = DemiPlan()
    plan.insert_polygone(T1)
    # Vérifions qu'il n'y a pas de deuxième id créé pour la version à 180 degrés
    T1_180 = Vertex(T1).rotate_180()
    plan.insert_polygone(T1_180)
    col3 = {
        3: [
            np.array([[[2., 1.83333], [1., 2.33333], [3., 2.33333]],
                      [[1., 2.], [2., 2.5], [3., 2.]]]),
            np.array([[[0., 0.], [1., 0.5], [2., 0.]],
                      [[0., 0.], [1., 0.5], [2., 0.]]])
        ]
    }

    assert check_collection_equals(col3, plan.get_collection()) is True
    # Vérifions que une double rotation à 180 revient au polygone de départ.
    plan.insert_polygone(Vertex(T1_180).rotate_180())
    assert check_collection_equals(col3, plan.get_collection()) is True

    # Vérifions qu'il est possible de positionner le même polygone
    # à un endroit différent (à une translation près)
    plan = DemiPlan()
    plan.insert_polygone(T1)
    plan.insert_polygone(Vertex(T1).translate((4, 5)))
    col4 = {
        3: [
            np.array([[[1., 2.], [2., 2.5], [3., 2.]],
                      [[4., 5.], [5., 5.5], [6., 5.]]]),
            np.array([[[0., 0.], [1., 0.5], [2., 0.]],
                      [[0., 0.], [1., 0.5], [2., 0.]]])
        ]
    }

    assert check_collection_equals(col4, plan.get_collection()) is True
Exemple #9
0
from Polygones_package import DemiPlan
import numpy as np
from Polygones_package.Vertex import Vertex

if __name__ == '__main__':
    # Check :
    plan = DemiPlan()
    T1 = np.array(((1, 1), (1, 5), (2, 3)))
    T1_translated = Vertex(T1).translate((6, 7))
    T1_180 = Vertex(T1).rotate_180()
    T2 = np.array(((1, 0.1), (2, 0.1), (3, 3)))

    plan.insert_polygone(T1)
    plan.insert_polygone(T1)
    plan.insert_polygone(T1_translated)
    plan.insert_polygone(T1_180)

    plan.move_polygone(T1, (9, 8))

    plan.insert_polygone(T2)

    lowest_polygone = plan.pop_lowest_polygone()

    res = plan.get_polygones_between(7, 16)
    print(res)
    plan.visualize_polygones("./data/demi_plan.png")