Files
openmesh/src/Python/Unittests/test_trimesh_circulator_vertex_ohalfedge.py
Jan Möbius 8a19cd851e Python source
git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@1171 fdac6126-5c0c-442c-9429-916003d36597
2014-09-16 11:15:13 +00:00

81 lines
3.1 KiB
Python

import unittest
import openmesh
class TriMeshCirculatorVertexOHalfEdge(unittest.TestCase):
def setUp(self):
self.mesh = openmesh.TriMesh()
# Add some vertices
self.vhandle = []
self.vhandle.append(self.mesh.add_vertex(openmesh.Vec3d(0, 1, 0)))
self.vhandle.append(self.mesh.add_vertex(openmesh.Vec3d(1, 0, 0)))
self.vhandle.append(self.mesh.add_vertex(openmesh.Vec3d(2, 1, 0)))
self.vhandle.append(self.mesh.add_vertex(openmesh.Vec3d(0,-1, 0)))
self.vhandle.append(self.mesh.add_vertex(openmesh.Vec3d(2,-1, 0)))
# Add four faces
self.mesh.add_face(self.vhandle[0], self.vhandle[1], self.vhandle[2])
self.mesh.add_face(self.vhandle[1], self.vhandle[3], self.vhandle[4])
self.mesh.add_face(self.vhandle[0], self.vhandle[3], self.vhandle[1])
self.mesh.add_face(self.vhandle[2], self.vhandle[1], self.vhandle[4])
'''
Test setup:
0 ==== 2
|\ 0 /|
| \ / |
|2 1 3|
| / \ |
|/ 1 \|
3 ==== 4
Starting halfedge is 1->4
'''
def test_vertex_outgoing_halfedge_without_holes_increment(self):
# Iterate around vertex 1 at the middle
voh_it = openmesh.VertexOHalfedgeIter(self.mesh, self.vhandle[1])
heh = voh_it.__next__()
self.assertEqual(heh.idx(), 11)
self.assertEqual(self.mesh.face_handle(heh).idx(), 3)
heh = voh_it.__next__()
self.assertEqual(heh.idx(), 6)
self.assertEqual(self.mesh.face_handle(heh).idx(), 1)
heh = voh_it.__next__()
self.assertEqual(heh.idx(), 1)
self.assertEqual(self.mesh.face_handle(heh).idx(), 2)
heh = voh_it.__next__()
self.assertEqual(heh.idx(), 2)
self.assertEqual(self.mesh.face_handle(heh).idx(), 0)
self.assertRaises(StopIteration, voh_it.__next__)
def test_vertex_outgoing_halfedge_boundary_increment(self):
# Iterate around vertex 2 at the boundary
voh_it = openmesh.VertexOHalfedgeIter(self.mesh, self.vhandle[2])
heh = voh_it.__next__()
self.assertEqual(heh.idx(), 15)
self.assertEqual(self.mesh.face_handle(heh).idx(), -1)
heh = voh_it.__next__()
self.assertEqual(heh.idx(), 3)
self.assertEqual(self.mesh.face_handle(heh).idx(), 3)
heh = voh_it.__next__()
self.assertEqual(heh.idx(), 4)
self.assertEqual(self.mesh.face_handle(heh).idx(), 0)
self.assertRaises(StopIteration, voh_it.__next__)
def test_vertex_outgoing_halfedge_dereference_increment(self):
# Iterate around vertex 1 at the middle
voh_it = openmesh.VertexOHalfedgeIter(self.mesh, self.vhandle[1])
heh = voh_it.__next__()
eh = self.mesh.edge_handle(heh)
vh = self.mesh.to_vertex_handle(heh)
self.assertEqual(heh.idx(), 11)
self.assertEqual(eh.idx(), 5)
self.assertEqual(vh.idx(), 4)
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(TriMeshCirculatorVertexOHalfEdge)
unittest.TextTestRunner(verbosity=2).run(suite)