A vertex is a 0-dimensional, topological entity that bounds an edge. Generally, an edge is bounded by two distinct vertices as is depicted in Figure. Distinct Start and End Vertices on an Open Edge; however, if the edge is closed, both ends of the edge are bounded by the same vertex as is depicted in Figure. One Vertex Bounds a Closed Edge. It is also possible for an edge to be zero length, with no underlying curve, and be bounded by a single vertex. Such an edge is called a NULL edge and is depicted in Figure. One Vertex Bounds a NULL Edge. The vertex at the low parameter end of an edge is called the start vertex and the vertex at the high parameter end of an edge is called the end vertex. A vertex lying on the interior of a face is referred to as an isolated vertex. An isolated vertex has a "degenerate edge" or "NULL edge" associated with it. (The vertex lying at the apex of a conical face is an example of an isolated vertex.)
A vertex embodies the user's view of a corner of a face or the junction point of two or more edges. Each vertex corresponds to a unique, three-dimensional point in the geometric model. Two vertices in the same body cannot exist at the same location. If two vertices in the same body exist at the same location, they must be combined to form a single vertex.
If a vertex exists at a point at which the model is non-manifold, the vertex is referred to as a non-manifold vertex. Examples of non-manifold vertices include: a vertex where two solid regions touch at a point; a vertex where a solid region touches a sheet region at a point; a vertex where a solid region touches a wire region; a vertex where two sheet regions touch at a single point; a vertex where the interior of a face collapses to a single point; and a vertex where three or more wire edges meet.
If a wire and a face touch, they must be connected at the intersection point(s). A wire is connected to a face using a vertex that is common to both entities. If the vertex lies in the middle of a face, it represents a NULL edge in the face. If a wire and a face are connected, they are part of the same shell. A vertex that connects a wire to a face is non-manifold.
A vertex is required on a periodic edge. The position of this vertex indicates where the jump in parameterization occurs on the edge. (If one obtains the parameter value associated with each position on a periodic edge, there is one position at which the parameter value suddenly changes, by the period of the edge.) The location of this start/end vertex need not coincide with the location of the start/end of the underlying periodic curve. This vertex is sometimes called a seam vertex. It is analogous to a seam edge on a periodic face.
Vertices also exist at singularities on surfaces. The only singularities that are permissible in ACIS are those in which a u or v-boundary of a surface degenerates to a single point. A vertex must exist wherever such a singularity exists. (The only exception to this rule is for the poles of a spherical face. Vertices are not required at the poles of a spherical face.)
Some operations (such as blending) require each edge to be split wherever its convexity changes. This implies that vertices exist wherever the convexity of an edge changes, and that after all such vertices have been inserted, every edge has a constant convexity. (That is, each edge is convex, concave, or tangent along its entire length.)
A vertex maintains pointers to one or more of the edges which it bounds. Generally, a vertex contains a pointer to one of the edges it bounds. The other edges can be found by following the next, previous, and partner pointers of the coedges of the edges. When a body is non-manifold at a vertex (that is, more than one manifold group of faces meet at a vertex or a wire attaches to a face at a vertex), then the vertex must maintain a pointer to an edge in each group of faces and wires. The other edges in a manifold group of faces or a wire can be found by following coedge pointers.
The concept of a vertex is implemented in the ACIS VERTEX class. The VERTEX class is derived from the ENTITY class; therefore, VERTEXes are part of the persistent model and inherit all of the Model Management capabilities of the ENTITY class. In addition, the VERTEX class has methods (member functions) to obtain the topological ENTITYs above it in the topological hierarchy. (Because a VERTEX is the lowest level of topology, there are no ENTITYs below it in the topological hierarchy.) If a VERTEX has an owner, the owner is an EDGE.
VERTEX::count_edges() Returns the number of EDGEs pointed to by the VERTEX. VERTEX::edge() Returns a pointer to an EDGE at the VERTEX - for a VERTEX that points to at most one EDGE. If the VERTEX points to more than one EDGE, this returns NULL. VERTEX::edge(int i) Returns a pointer to the ith EDGE at the VERTEX. (Indices start with 0.) VERTEX::owner() Returns a pointer to an EDGE bounded by the VERTEX. (Specifically, it returns a pointer to the 0th EDGE pointed to by the VERTEX.) VERTEX::geometry() Returns a pointer to the APOINT underlying the VERTEX.
A VERTEX does not point to all of the EDGEs that are bounded by the VERTEX. To obtain a list of all of the EDGEs that are bounded by the VERTEX, you can traverse COEDGE pointers, or call the API function api_get_edges(ENTITY*, ENTITY_LIST&, ...), which is declared in kernapi.hxx, or call the direct interface function get_edges(ENTITY*, ENTITY_LIST&, ...), which is declared in get_top.hxx.
There are no functions to obtain the bounding box of a VERTEX. (VERTEXes do not have bounding boxes.)
- Refer to FAQs on VERTEX for more How To articles.