Skip to content

Commit fb26e9e

Browse files
committed
New test on valid actions
1 parent b056d51 commit fb26e9e

File tree

2 files changed

+32
-17
lines changed

2 files changed

+32
-17
lines changed

mesh_model/mesh_analysis.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ def isSplitOk(d: Dart) -> (bool, bool):
326326
else:
327327
_, _, _, _, _, A, B, C, D = mesh.active_triangles(d)
328328

329-
if not test_degree(A) or not test_degree(B):
329+
if not test_degree(C) or not test_degree(D):
330330
topo = False
331331
return topo, geo
332332

@@ -487,7 +487,7 @@ def valid_triangle(vect_AB, vect_AC, vect_BC) -> bool:
487487

488488
L_max = max(dist_AB, dist_AC, dist_BC)
489489

490-
if target_mesh_size/3*sqrt(2) < L_max < target_mesh_size*3*sqrt(2): #4.24
490+
if target_mesh_size/2*sqrt(2) < L_max and L_max < target_mesh_size*3*sqrt(2): # 0.35<Lmax<4.24
491491
pass
492492
else:
493493
return False
@@ -497,8 +497,8 @@ def valid_triangle(vect_AB, vect_AC, vect_BC) -> bool:
497497
angle_C = degrees(angle_from_sides(dist_AB, dist_BC, dist_AC)) # Angle au point B
498498
angle_A = degrees(angle_from_sides(dist_BC, dist_AC, dist_AB)) # Angle au point C
499499

500-
# Vérification que tous les angles sont supérieurs à 2°
501-
if angle_A <= 2 or angle_B <= 2 or angle_C <= 2:
500+
# Vérification que tous les angles sont supérieurs à 5°
501+
if angle_A <= 5 or angle_B <= 5 or angle_C <= 5:
502502
return False
503503
return True
504504

@@ -520,7 +520,7 @@ def test_degree(n: Node) -> bool:
520520
:param n: a Node
521521
:return: True if the degree is lower than 10, False otherwise
522522
"""
523-
if degree(n) > 12:
523+
if degree(n) > 10:
524524
return False
525525
else:
526526
return True

test_modules/test_mesh_analysis.py

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from mesh_model.mesh_struct.mesh import Mesh
44
from mesh_model.mesh_struct.mesh_elements import Dart
55
import mesh_model.mesh_analysis as Mesh_analysis
6-
from actions.triangular_actions import split_edge_ids
6+
from actions.triangular_actions import split_edge_ids, collapse_edge, collapse_edge_ids
77
from plots.mesh_plotter import plot_mesh
88

99
class TestMeshAnalysis(unittest.TestCase):
@@ -40,7 +40,7 @@ def test_split_score(self):
4040
split_edge_ids(cmap, 0, 2)
4141
split_edge_ids(cmap, 1, 2) # split impossible
4242
nodes_score, mesh_score, mesh_ideal_score, adjacency = Mesh_analysis.global_score(cmap)
43-
self.assertEqual((5, 1), (mesh_score, mesh_ideal_score))
43+
self.assertEqual((3, 1), (mesh_score, mesh_ideal_score))
4444

4545
def test_find_template_opposite_node_not_found(self):
4646
nodes = [[0.0, 0.0], [1.0, 0.0], [1.0, 1.0], [0.0, 1.0], [2.0, 0.0]]
@@ -54,29 +54,44 @@ def test_find_template_opposite_node_not_found(self):
5454
self.assertEqual(node, 3)
5555

5656
def test_is_valid_action(self):
57-
nodes = [[0.0, 0.0], [1.0, 0.0], [1.0, 1.0], [0.0, 1.0], [2.0, 0.0]]
58-
faces = [[0, 1, 2], [0, 2, 3], [1, 4, 2]]
57+
nodes = [[0.0, 0.0], [1.0, 0.0], [0.5, 1], [-0.5, 1.0], [0.0, 2.0], [-1.0, 2.0], [-2.0, 1.0], [-1.0, 0.0],
58+
[-2.0, 0.0], [-2.0, -1.0], [-0.5, -1.0], [-1.0, -2.0], [0.0, -2.0], [1.0, -2.0],
59+
[0.5, -1.0], [2.0, -1.0], [2.0, 0.0], [2.0, 1.0], [1.0, 2.0]]
60+
faces = [[0, 1, 2], [0, 2, 3], [3, 2, 4], [7, 0, 3], [7, 10, 0], [10, 14, 0], [0, 14, 1], [10, 12, 14],
61+
[3, 4, 5], [3, 5, 6], [3, 6, 7], [7, 6, 8], [7, 8, 9], [7, 9, 10], [10, 9, 11], [10, 11, 12],
62+
[14, 12, 13], [14, 13, 15], [1, 14, 15], [1, 15, 16], [1, 16, 17], [1, 17, 2], [2, 17, 18], [2, 18, 4]]
5963
cmap = Mesh(nodes, faces)
64+
split_edge_ids(cmap, 0, 1)
65+
66+
#Boundary dart
67+
self.assertEqual(Mesh_analysis.isValidAction(cmap, 25, 0), (False, True))
6068

6169
# Flip test
70+
self.assertEqual(Mesh_analysis.isValidAction(cmap, 3, 0), (True, True))
6271
self.assertEqual(Mesh_analysis.isValidAction(cmap, 0, 0), (False, True))
63-
self.assertEqual(Mesh_analysis.isValidAction(cmap, 2, 0), (True, True))
6472

6573
#Split test
66-
self.assertEqual(Mesh_analysis.isValidAction(cmap, 0, 1), (False, True))
67-
self.assertEqual(Mesh_analysis.isValidAction(cmap, 2, 1), (True, True))
74+
self.assertEqual(Mesh_analysis.isValidAction(cmap, 0, 1), (True, True))
75+
split_edge_ids(cmap, 1, 19)
76+
split_edge_ids(cmap, 1, 20)
77+
self.assertEqual(Mesh_analysis.isValidAction(cmap, 20, 1), (True, False))
78+
split_edge_ids(cmap, 0, 19)
79+
split_edge_ids(cmap, 0, 22)
80+
split_edge_ids(cmap, 0, 23)
81+
self.assertEqual(Mesh_analysis.isValidAction(cmap, 20, 1), (False, True))
6882

6983
#Collapse test
70-
self.assertEqual(Mesh_analysis.isValidAction(cmap, 0, 3), (False, True))
71-
self.assertEqual(Mesh_analysis.isValidAction(cmap, 2, 3), (False, False))
84+
self.assertEqual(Mesh_analysis.isValidAction(cmap, 20, 2), (True, True))
85+
plot_mesh(cmap)
86+
self.assertEqual(Mesh_analysis.isValidAction(cmap, 2, 2), (False, True))
7287

7388
#All action test
74-
self.assertEqual(Mesh_analysis.isValidAction(cmap, 0, 3), (False, True))
7589
self.assertEqual(Mesh_analysis.isValidAction(cmap, 2, 3), (False, False))
90+
self.assertEqual(Mesh_analysis.isValidAction(cmap, 9, 3), (True, True))
7691

7792
#One action test
78-
self.assertEqual(Mesh_analysis.isValidAction(cmap, 0, 4), (False, True))
79-
self.assertEqual(Mesh_analysis.isValidAction(cmap, 2, 4), (True, True))
93+
self.assertEqual(Mesh_analysis.isValidAction(cmap, 0, 4), (True, True))
94+
self.assertEqual(Mesh_analysis.isValidAction(cmap, 94, 4), (False, False))
8095

8196
def test_isFlipOk(self):
8297
nodes = [[0.0, 0.0], [1.0, 0.0], [1.0, 1.0], [0.0, 1.0], [2.0, 0.0]]

0 commit comments

Comments
 (0)