| GTS Library Reference Manual |
|---|
#include <gts.h> #define GTS_VERTEX_CLASS (klass) #define GTS_VERTEX (obj) #define GTS_IS_VERTEX (obj) GtsVertexClass; GtsVertex; GtsVertexClass* gts_vertex_class (void); GtsVertex* gts_vertex_new (GtsVertexClass *klass,gdouble x,gdouble y,gdouble z);gboolean gts_vertex_is_unattached (GtsVertex *v);gboolean gts_vertex_is_boundary (GtsVertex *v, GtsSurface *surface);guint gts_vertex_is_contact (GtsVertex *v,gboolean sever); GtsSegment* gts_vertices_are_connected (GtsVertex *v1, GtsVertex *v2);void gts_vertex_replace (GtsVertex *v, GtsVertex *with);GSList * gts_vertex_neighbors (GtsVertex *v,GSList *list, GtsSurface *surface);GSList * gts_vertex_triangles (GtsVertex *v,GSList *list);GSList * gts_vertex_faces (GtsVertex *v, GtsSurface *surface,GSList *list);GSList * gts_vertex_fan_oriented (GtsVertex *v, GtsSurface *surface);gboolean gts_vertex_encroaches_edge (GtsVertex *v, GtsEdge *e);GSList * gts_vertices_from_segments (GSList *segments);GList * gts_vertices_merge (GList *vertices,gdouble epsilon,gboolean (*check) (GtsVertex *, GtsVertex *));
#define GTS_VERTEX_CLASS(klass)
Casts klass to GtsVertexClass.
klass : | a descendant of GtsVertexClass. |
#define GTS_IS_VERTEX(obj)
Evaluates to TRUE if obj is a descendant of GtsVertex, FALSE otherwise.
obj : | a pointer to test. |
typedef struct {
GtsPointClass parent_class;
void (* intersection_attributes) (GtsVertex *,
GtsObject *,
GtsObject *);
} GtsVertexClass;The vertex class. No virtual functions are associated.
typedef struct {
GtsPoint p;
GSList * segments;
} GtsVertex;The vertex object.
GtsPoint p; | The parent object. |
segments; | Contains all the GtsSegment using this vertex as one of their endpoints. |
GtsVertex* gts_vertex_new (GtsVertexClass *klass,gdouble x,gdouble y,gdouble z);
klass : | |
x : | the x-coordinate of the vertex to create. |
y : | the y-coordinate of the vertex to create. |
z : | the y-coordinate of the vertex to create. |
| Returns : | a new GtsVertex with |
gboolean gts_vertex_is_unattached (GtsVertex *v);
v : | a GtsVertex. |
| Returns : | TRUE if |
gboolean gts_vertex_is_boundary (GtsVertex *v, GtsSurface *surface);
v : | a GtsVertex. |
surface : | a GtsSurface or NULL. |
| Returns : | TRUE if |
guint gts_vertex_is_contact (GtsVertex *v,gboolean sever);
v : | a GtsVertex. |
sever : | if TRUE and if |
| Returns : | the number of sets of connected triangles sharing |
GtsSegment* gts_vertices_are_connected (GtsVertex *v1, GtsVertex *v2);
v1 : | a GtsVertex. |
v2 : | another GtsVertex. |
| Returns : | if |
void gts_vertex_replace (GtsVertex *v, GtsVertex *with);
Replaces vertex v with vertex with. v and with must be
different. All the GtsSegment which have v has one of their
vertices are updated. The segments list of vertex v is freed and
v->segments is set to NULL.
v : | a GtsVertex. |
with : | another GtsVertex. |
GSList * gts_vertex_neighbors (GtsVertex *v,GSList *list, GtsSurface *surface);
Adds to list all the GtsVertex connected to v by a GtsSegment and not
already in list. If surface is not NULL only the vertices connected to
v by an edge belonging to surface are considered.
v : | a GtsVertex. |
list : | a list of GtsVertex. |
surface : | a GtsSurface or NULL. |
| Returns : | the new list of unique GtsVertex. |
GSList * gts_vertex_triangles (GtsVertex *v,GSList *list);
Adds all the GtsTriangle which share v as a vertex and do not
already belong to list.
v : | a GtsVertex. |
list : | a list of GtsTriangle. |
| Returns : | the new list of unique GtsTriangle which share |
GSList * gts_vertex_faces (GtsVertex *v, GtsSurface *surface,GSList *list);
Adds all the GtsFace belonging to surface (if not NULL) which share
v as a vertex and do not already belong to list.
v : | a GtsVertex. |
surface : | a GtsSurface or NULL. |
list : | a list of GtsFace. |
| Returns : | the new list of unique GtsFace belonging to |
GSList * gts_vertex_fan_oriented (GtsVertex *v, GtsSurface *surface);
v : | a GtsVertex. |
surface : | a GtsSurface. |
| Returns : | a list of GtsEdge describing in counterclockwise order the
boundary of the fan of summit |
gboolean gts_vertex_encroaches_edge (GtsVertex *v, GtsEdge *e);
v : | a GtsVertex. |
e : | a GtsEdge. |
| Returns : | TRUE if |
GSList * gts_vertices_from_segments (GSList *segments);
segments : | a list of GtsSegment. |
| Returns : | a list of GtsVertex, vertices of a GtsSegment in |
GList * gts_vertices_merge (GList *vertices,gdouble epsilon,gboolean (*check) (GtsVertex *, GtsVertex *));
For each vertex v in vertices look if there are any vertex of
vertices contained in a box centered on v of size 2*epsilon. If
there are and if check is not NULL and returns TRUE, replace
them with v (using gts_vertex_replace()), destroy them and remove
them from list. This is done efficiently using Kd-Trees.
vertices : | a list of GtsVertex. |
epsilon : | half the size of the bounding box to consider for each vertex. |
check : | function called for each pair of vertices about to be merged or NULL. |
| Returns : | the updated list of vertices. |
| <<< Points | Segments >>> |