Python Examples
git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@1169 fdac6126-5c0c-442c-9429-916003d36597
This commit is contained in:
132
Doc/Examples/python_tutorial.py
Normal file
132
Doc/Examples/python_tutorial.py
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
##################################################
|
||||||
|
# Getting Started
|
||||||
|
##################################################
|
||||||
|
|
||||||
|
from openmesh import *
|
||||||
|
|
||||||
|
mesh = TriMesh()
|
||||||
|
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# Adding Items to a Mesh
|
||||||
|
##################################################
|
||||||
|
|
||||||
|
# add a a couple of vertices to the mesh
|
||||||
|
vh0 = mesh.add_vertex(TriMesh.Point(0, 1, 0))
|
||||||
|
vh1 = mesh.add_vertex(TriMesh.Point(1, 0, 0))
|
||||||
|
vh2 = mesh.add_vertex(TriMesh.Point(2, 1, 0))
|
||||||
|
vh3 = mesh.add_vertex(TriMesh.Point(0,-1, 0))
|
||||||
|
vh4 = mesh.add_vertex(TriMesh.Point(2,-1, 0))
|
||||||
|
|
||||||
|
# add a couple of faces to the mesh
|
||||||
|
fh0 = mesh.add_face(vh0, vh1, vh2)
|
||||||
|
fh1 = mesh.add_face(vh1, vh3, vh4)
|
||||||
|
fh2 = mesh.add_face(vh0, vh3, vh1)
|
||||||
|
|
||||||
|
# add another face to the mesh, this time using a list
|
||||||
|
vh_list = [vh2, vh1, vh4]
|
||||||
|
fh3 = mesh.add_face(vh_list)
|
||||||
|
|
||||||
|
# 0 ==== 2
|
||||||
|
# |\ 0 /|
|
||||||
|
# | \ / |
|
||||||
|
# |2 1 3|
|
||||||
|
# | / \ |
|
||||||
|
# |/ 1 \|
|
||||||
|
# 3 ==== 4
|
||||||
|
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# Iterators
|
||||||
|
##################################################
|
||||||
|
|
||||||
|
# iterate over all vertices
|
||||||
|
for vh in mesh.vertices():
|
||||||
|
print vh.idx()
|
||||||
|
|
||||||
|
# iterate over all halfedges
|
||||||
|
for heh in mesh.halfedges():
|
||||||
|
print heh.idx()
|
||||||
|
|
||||||
|
# iterate over all edges
|
||||||
|
for eh in mesh.edges():
|
||||||
|
print eh.idx()
|
||||||
|
|
||||||
|
# iterate over all faces
|
||||||
|
for fh in mesh.faces():
|
||||||
|
print fh.idx()
|
||||||
|
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# Circulators
|
||||||
|
##################################################
|
||||||
|
|
||||||
|
# iterate over all neighboring vertices
|
||||||
|
for vh in mesh.vv(vh1):
|
||||||
|
print vh.idx()
|
||||||
|
|
||||||
|
# iterate over all incoming halfedges
|
||||||
|
for heh in mesh.vih(vh1):
|
||||||
|
print heh.idx()
|
||||||
|
|
||||||
|
# iterate over all outgoing halfedges
|
||||||
|
for heh in mesh.voh(vh1):
|
||||||
|
print heh.idx()
|
||||||
|
|
||||||
|
# iterate over all adjacent edges
|
||||||
|
for eh in mesh.ve(vh1):
|
||||||
|
print eh.idx()
|
||||||
|
|
||||||
|
# iterate over all adjacent faces
|
||||||
|
for fh in mesh.vf(vh1):
|
||||||
|
print fh.idx()
|
||||||
|
|
||||||
|
# iterate over the face's vertices
|
||||||
|
for vh in mesh.fv(fh0):
|
||||||
|
print vh.idx()
|
||||||
|
|
||||||
|
# iterate over the face's halfedges
|
||||||
|
for heh in mesh.fh(fh0):
|
||||||
|
print heh.idx()
|
||||||
|
|
||||||
|
# iterate over the face's edges
|
||||||
|
for eh in mesh.fe(fh0):
|
||||||
|
print eh.idx()
|
||||||
|
|
||||||
|
# iterate over all edge-neighboring faces
|
||||||
|
for fh in mesh.ff(fh0):
|
||||||
|
print fh.idx()
|
||||||
|
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# Properties
|
||||||
|
##################################################
|
||||||
|
|
||||||
|
prop_handle = VPropHandle()
|
||||||
|
mesh.add_property(prop_handle, "cogs")
|
||||||
|
|
||||||
|
for vh in mesh.vertices():
|
||||||
|
cog = TriMesh.Point(0,0,0)
|
||||||
|
valence = 0
|
||||||
|
for neighbor in mesh.vv(vh):
|
||||||
|
cog += mesh.point(neighbor)
|
||||||
|
valence += 1
|
||||||
|
mesh.set_property(prop_handle, vh, cog / valence)
|
||||||
|
|
||||||
|
mesh.remove_property(prop_handle)
|
||||||
|
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# Property Managers
|
||||||
|
##################################################
|
||||||
|
|
||||||
|
prop_man = VPropertyManager(mesh, "cogs")
|
||||||
|
|
||||||
|
prop_man.set_range(mesh.vertices(), TriMesh.Point(0,0,0))
|
||||||
|
|
||||||
|
for vh in mesh.vertices():
|
||||||
|
valence = 0
|
||||||
|
for neighbor in mesh.vv(vh):
|
||||||
|
prop_man[vh] += mesh.point(neighbor)
|
||||||
|
valence += 1
|
||||||
|
prop_man[vh] /= valence
|
||||||
Reference in New Issue
Block a user