Polyeder-Hierarchien

Entfernung einer Ecke eines Polyeders.
Konvexes Füllen des entstandenen Loches.


explain_pluck(int poly_vert_no, 
	float (*poly_vertices)[3], int poly_face_no, 
	long *poly_faces, char *poly_names[], int vert_no, 
	int *vertices, int face_no, long *faces)
{
  /* create and rotate the polyhedron */
  Begin_atomic("poly");
    Create_polyhedron("P0", poly_vert_no, poly_face_no, 
	poly_vertices, poly_faces);
    Write_to_text_view("TEXT", "The polyhedron is now being created.");
    Rotate_world();
  End_atomic();

  /* remove vertices and cones */
  Begin_atomic("Pluck");
    Split_polyhedron(poly_names, "P0", vert_no, vertices ); 
    Write_to_text_view("TEXT", "Given a polyhedron, P0, we build a\n 
	polyhedron P1 such that P1 is formed by\n
	removing in turn each vertex in\n
	V(P0) - V(P1).\n
	The cone of faces attached to the vertex\nis also removed.\n
	This leaves a hole in the polyhedron P0.");
  End_atomic();

  /* add new faces */
  Begin_atomic("add_faces");
    Add_faces(poly_names[0], face_no, faces);
    Write_to_text_view("TEXT", 
	"This hole is retriangulated in convex\nfashion.");
  End_atomic();

  /* undo plucking */
  sleep(2);
  Undo(2);
}