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
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
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
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
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
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
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
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
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")