NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.52">



Segments -- segment object and related functions.


Segments are defined by their two GtsVertex. They are not oriented.

When destroying a GtsSegment, all the vertices not used by another edge are also destroyed. This default behaviour can be changed punctually by setting the global variable gts_allow_floating_vertices to TRUE. You must not forget to set this variable back to FALSE as all the algorithms of GTS assume the default behaviour.



#define     GTS_SEGMENT_CLASS(klass)

Casts klass to GtsSegmentClass.

klass :a descendant of GtsSegmentClass.


#define     GTS_SEGMENT(obj)

Casts obj to GtsSegment.

obj :a descendant of GtsSegment.


#define     GTS_IS_SEGMENT(obj)

Evaluates to TRUE if obj is a descendant of GtsSegment, FALSE otherwise.

obj :a pointer to test.

struct GtsSegmentClass

struct GtsSegmentClass;

The segment class. No virtual functions are assiocated.

struct GtsSegment

struct GtsSegment {
  GtsObject object;

  GtsVertex * v1;
  GtsVertex * v2;

The segment object.

GtsObject objectThe parent object.
GtsVertex *v1First endpoint of the segment.
GtsVertex *v2Second endpoint of the segment.

gts_segment_class ()

GtsSegmentClass* gts_segment_class          (void);

Returns : the GtsSegmentClass.

gts_segment_new ()

GtsSegment* gts_segment_new                 (GtsSegmentClass *klass,
                                             GtsVertex *v1,
                                             GtsVertex *v2);

klass : a GtsSegmentClass.
v1 : a GtsVertex.
v2 : another GtsVertex different from v1.
Returns : a new GtsSegment linking v1 and v2.


#define     gts_segments_are_identical(s1, s2)

Evaluates to TRUE if s1 and s2 link the same vertices, FALSE otherwise.

s1 :a GtsSegment.
s2 :another GtsSegment.

gts_segments_are_intersecting ()

GtsIntersect gts_segments_are_intersecting  (GtsSegment *s1,
                                             GtsSegment *s2);

s1 : a GtsSegment.
s2 : a GtsSegment.
Returns : GTS_IN if s1 and s2 are intersecting, GTS_ON if one of the endpoints of s1 (resp. s2) lies on s2 (resp. s1), GTS_OUT otherwise.

gts_segment_is_duplicate ()

GtsSegment* gts_segment_is_duplicate        (GtsSegment *s);

s : a GtsSegment.
Returns : the first GtsSegment different from s which shares the same endpoints or NULL if there is none.

gts_segment_is_ok ()

gboolean    gts_segment_is_ok               (GtsSegment *s);

s : a GtsSegment.
Returns : TRUE if s is not degenerate (i.e. s->v1 != s->v2) and not duplicate, FALSE otherwise.


#define     gts_segment_connect(s, e1, e2)

Evaluates to TRUE if s connects e1 with e2, FALSE otherwise.

s :a GtsSegment.
e1 :a GtsVertex.
e2 :another GtsVertex.


#define     gts_segments_touch(s1, s2)

s1 : 
s2 : 

gts_segments_from_vertices ()

GSList*     gts_segments_from_vertices      (GSList *vertices);

vertices : a list of GtsVertex.
Returns : a list of unique GtsSegment which have one of their vertices in vertices.

gts_segment_midvertex ()

GtsVertex*  gts_segment_midvertex           (GtsSegment *s,
                                             GtsVertexClass *klass);

s : a GtsSegment.
klass : a GtsVertexClass to be used for the new vertex.
Returns : a new GtsVertex, midvertex of s.