Example #1
0
bool computeNormals(TriMesh mesh)
{

	OpenMesh::FPropHandleT<TriMesh::Point> trueNormals;
	OpenMesh::FPropHandleT<TriMesh::Point> approxNormals;
	mesh.add_property(trueNormals);
	mesh.add_property(approxNormals);
	TriMesh::FaceIter	f_it, f_end(mesh.faces_end());
	double valence;
	TriMesh::FaceVertexIter fv_it;

	for (f_it=mesh.faces_begin(); f_it!=f_end; ++f_it)
	{
		mesh.property(trueNormals,f_it).vectorize(0.0f);
		valence = 0;
		for (fv_it=mesh.fv_iter( f_it ); fv_it; ++fv_it)
		{
			mesh.property(approxNormals,fv_it) += mesh.point( fv_it );
			++valence;
		}
		mesh.property(approxNormals,f_it) /= valence;
	}
	return true;
} // bool computeNormals(TriMesh mesh)
Example #2
0
bool ring::init()
{
	if (!initialised)
	{
		mesh.add_property(epochs);
		initialised =  true;
		++epoch;
		TriMesh::VertexIter v_it, v_end(mesh.vertices_end());
		for (v_it=mesh.vertices_begin(); v_it!=v_end; ++v_it)
		{
			mesh.property(epochs,v_it) = epoch;
		}
	}
	// set epochs 

	return true;
}