![]() |
pcb 4.1.1
An interactive printed circuit board layout editor.
|

Go to the source code of this file.
Data Structures | |
| struct | _EdgeInter |
| struct | _Ear |
Defines | |
| #define | EDGE_INTER(obj) |
| #define | IS_EDGE_INTER(obj) |
| #define | UPDATE_ORIENTATION |
| #define | IS_SET(s, f) ((GTS_OBJECT_FLAGS (s) & (f)) != 0) |
| #define | SET(s, f) (GTS_OBJECT_FLAGS (s) |= (f)) |
| #define | UNSET(s, f) (GTS_OBJECT_FLAGS (s) &= ~(f)) |
| #define | NEXT(s) (GTS_OBJECT (s)->reserved) |
| #define | ORIENTATION(p1, p2, p3, o) (gts_point_orientation_3d (p1, p2, o, p3)) |
| #define | ORIENTATION_SOS(p1, p2, p3, o) (gts_point_orientation_3d_sos (p1, p2, o, p3)) |
| #define | ORIENTED_VERTICES(s, next, w1, w2) |
Typedefs | |
| typedef struct _EdgeInter | EdgeInter |
| typedef struct _Ear | Ear |
Enumerations | |
| enum | CurveFlag { INTERIOR = 1 << (GTS_USER_FLAG), RELEVANT = 1 << (GTS_USER_FLAG + 1) } |
Functions | |
| static void | surface_inter_destroy (GtsObject *object) |
| static void | surface_inter_class_init (GtsObjectClass *klass) |
| static void | surface_inter_init (GtsSurfaceInter *si) |
| GtsSurfaceInterClass * | gts_surface_inter_class (void) |
| static GtsEdgeClass * | edge_inter_class (void) |
| static EdgeInter * | edge_inter_new (GtsVertex *v1, GtsVertex *v2, GtsTriangle *t1, GtsTriangle *t2) |
| static GtsPoint * | segment_triangle_intersection (GtsSegment *s, GtsTriangle *t, GtsPointClass *klass) |
| static gint | triangle_triangle_orientation (GtsPoint *p1, GtsPoint *p2, GtsPoint *p3, GtsPoint *p4, GtsPoint *p5, GtsPoint *p6) |
| static gint | triangle_point_orientation (GtsTriangle *t1, GtsTriangle *t2, gint o1, GtsPoint *p) |
| static void | add_edge_inter (GtsEdge *e, GtsTriangle *t, GtsVertex *v) |
| static GtsVertex * | intersects (GtsEdge *e, GtsTriangle *t, GtsSurface *s) |
| static gint | intersection_orientation (GtsTriangle *t1, GtsEdge *e, GtsTriangle *t2) |
| static void | intersect_edges (GtsBBox *bb1, GtsBBox *bb2, GtsSurfaceInter *si) |
| static GtsSurfaceInter * | surface_inter_new (GtsSurfaceInterClass *klass, GtsSurface *s1, GtsSurface *s2, GNode *faces_tree1, GNode *faces_tree2) |
| static void | free_slist (GtsObject *o) |
| static void | free_glist (GtsObject *o) |
| GSList * | gts_surface_intersection (GtsSurface *s1, GtsSurface *s2, GNode *faces_tree1, GNode *faces_tree2) |
| static GtsSegment * | prev_flag (GtsSegment *s, CurveFlag flag) |
| static GtsSegment * | next_flag (GtsSegment *s, CurveFlag flag) |
| static GtsSegment * | next_interior (GtsVertex *v) |
| static GtsSegment * | prev_interior (GtsVertex *v) |
| static GtsSegment * | reverse (GtsSegment *start, gboolean interior, gboolean *isloop) |
| static GSList * | interior_loops (GSList *interior) |
| static GtsSegment * | segment_intersects (GtsPoint *p1, GtsPoint *p2, GSList *i, GtsPoint *o) |
| static gboolean | is_inside_wedge (GtsSegment *s1, GtsSegment *s2, GtsPoint *p, GtsPoint *o) |
| static GtsSegment * | connection (GtsPoint *p, GSList *interior, GSList *bloops, GtsPoint *o) |
| static gdouble | loop_orientation (GtsSegment *start, GtsPoint *p, GtsPoint *o) |
| static void | connect_interior_loop (GtsSegment *start, GSList **interior, GSList **bloops, GtsSurface *surface, GtsPoint *o) |
| static GSList * | boundary_loops (GSList *boundary) |
| static gboolean | point_in_wedge (GtsPoint *p1, GtsPoint *p2, GtsPoint *p3, GtsPoint *p, gboolean closed, GtsPoint *o) |
| static gboolean | segment_intersects1 (GtsPoint *p1, GtsPoint *p2, GtsPoint *p3, GtsPoint *p4, gboolean closed, GtsPoint *o) |
| static GtsSegment * | triangle_intersects_segments (GtsPoint *p1, GtsPoint *p2, GtsPoint *p3, gboolean closed, GtsSegment *start, GtsPoint *o) |
| static gboolean | new_ear (GtsSegment *s, Ear *e, GtsSegment *start, guint sloppy, GtsPoint *o) |
| static void | triangulate_loop (GtsSegment *start, GtsSurface *surface, GtsPoint *o) |
| static void | merge_duplicate (GtsEdge *e) |
| static void | triangulate_boundary_interior (GSList *boundary, GSList *interior, GtsSurface *s, GtsPoint *o) |
| static void | create_edges (GtsSegment *s, GtsSurface *surface) |
| static void | add_boundary (GtsSegment *s, GtsSegment *next, GSList **boundary) |
| static void | triangulate_face (GtsTriangle *t, GtsSurface *surface) |
| static void | free_edge_list (GtsObject *o) |
| GtsSurfaceInter * | gts_surface_inter_new (GtsSurfaceInterClass *klass, GtsSurface *s1, GtsSurface *s2, GNode *faces_tree1, GNode *faces_tree2, gboolean is_open1, gboolean is_open2) |
| static void | check_surface_edge (GtsEdge *e, gpointer *data) |
| static void | mark_edge (GtsObject *o, gpointer data) |
| static gint | triangle_orientation (GtsTriangle *t, GtsEdge *e) |
| static gboolean | check_orientation (GtsEdge *e, GtsSurface *s) |
| static void | check_edge (GtsSegment *s, gpointer *data) |
| gboolean | gts_surface_inter_check (GtsSurfaceInter *si, gboolean *closed) |
| static GtsFace * | next_compatible_face (GtsEdge *e, GtsFace *f, GtsSurface *s1, GtsSurface *s2) |
| static void | walk_faces (GtsEdge *e, GtsFace *f, GtsSurface *s1, GtsSurface *s2, GtsSurface *s) |
| void | gts_surface_inter_boolean (GtsSurfaceInter *si, GtsSurface *surface, GtsBooleanOperation op) |
| static void | self_intersecting (GtsBBox *bb1, GtsBBox *bb2, gpointer *d) |
| gboolean | gts_surface_foreach_intersecting_face (GtsSurface *s, GtsBBTreeTraverseFunc func, gpointer data) |
| static void | add_intersecting (GtsBBox *bb1, GtsBBox *bb2, GtsSurface *intersected) |
| GtsSurface * | gts_surface_is_self_intersecting (GtsSurface *s) |
| #define EDGE_INTER | ( | obj | ) |
GTS_OBJECT_CAST (obj,\ EdgeInter,\ edge_inter_class ())
Definition at line 95 of file boolean.c.
Referenced by edge_inter_new(), and reverse().
| #define IS_EDGE_INTER | ( | obj | ) |
(gts_object_is_from_class (obj,\ edge_inter_class ()))
Definition at line 98 of file boolean.c.
Referenced by reverse().
Definition at line 542 of file boolean.c.
Referenced by boundary_loops(), interior_loops(), next_flag(), next_interior(), prev_flag(), and prev_interior().
Definition at line 545 of file boolean.c.
Referenced by boundary_loops(), connect_interior_loop(), connection(), interior_loops(), loop_orientation(), new_ear(), reverse(), triangle_intersects_segments(), and triangulate_loop().
| #define ORIENTATION | ( | p1, | |
| p2, | |||
| p3, | |||
| o | |||
| ) | (gts_point_orientation_3d (p1, p2, o, p3)) |
Definition at line 883 of file boolean.c.
Referenced by is_inside_wedge(), loop_orientation(), new_ear(), and point_in_wedge().
| #define ORIENTATION_SOS | ( | p1, | |
| p2, | |||
| p3, | |||
| o | |||
| ) | (gts_point_orientation_3d_sos (p1, p2, o, p3)) |
Definition at line 884 of file boolean.c.
Referenced by segment_intersects(), and segment_intersects1().
| #define ORIENTED_VERTICES | ( | s, | |
| next, | |||
| w1, | |||
| w2 | |||
| ) |
Definition at line 543 of file boolean.c.
Referenced by interior_loops(), reverse(), and triangulate_boundary_interior().
Definition at line 544 of file boolean.c.
Referenced by boundary_loops(), interior_loops(), and triangulate_loop().
| #define UPDATE_ORIENTATION |
if (o > 0) { vi2 = v; /* e2 = e; */ } else { vi2 = vi1;\ /* e2 = e1; */\ vi1 = v;\ /* e1 = e; */ }
Definition at line 369 of file boolean.c.
Referenced by intersect_edges().
| typedef struct _EdgeInter EdgeInter |
| static void add_boundary | ( | GtsSegment * | s, |
| GtsSegment * | next, | ||
| GSList ** | boundary | ||
| ) | [static] |
Definition at line 1476 of file boolean.c.
References GTS_OBJECT, _GtsSegment::v1, and _GtsSegment::v2.
Referenced by triangulate_face().
| static void add_edge_inter | ( | GtsEdge * | e, |
| GtsTriangle * | t, | ||
| GtsVertex * | v | ||
| ) | [static] |
Definition at line 252 of file boolean.c.
References _GtsTriangle::e1, GTS_OBJECT, GTS_POINT, gts_point_orientation_3d_sos(), GTS_SEGMENT, gts_triangle_vertex, n, and triangle_point_orientation().
Referenced by intersects().

| static void add_intersecting | ( | GtsBBox * | bb1, |
| GtsBBox * | bb2, | ||
| GtsSurface * | intersected | ||
| ) | [static] |
Definition at line 1968 of file boolean.c.
References _GtsBBox::bounded, and gts_surface_add_face().
Referenced by gts_surface_is_self_intersecting().

| static GSList* boundary_loops | ( | GSList * | boundary | ) | [static] |
Definition at line 1061 of file boolean.c.
References INTERIOR, IS_SET, NEXT, next_interior(), prev_interior(), RELEVANT, UNSET, _GtsSegment::v1, and _GtsSegment::v2.
Referenced by triangulate_boundary_interior().

| static void check_edge | ( | GtsSegment * | s, |
| gpointer * | data | ||
| ) | [static] |
Definition at line 1684 of file boolean.c.
References check_orientation(), FALSE, GTS_EDGE, GTS_OBJECT, ok, _GtsSurfaceInter::s1, _GtsSurfaceInter::s2, _GtsVertex::segments, _GtsSegment::v1, and _GtsSegment::v2.
Referenced by gts_surface_inter_check().

| static gboolean check_orientation | ( | GtsEdge * | e, |
| GtsSurface * | s | ||
| ) | [static] |
Definition at line 1657 of file boolean.c.
References FALSE, gts_face_has_parent_surface(), GTS_IS_FACE, triangle_orientation(), _GtsEdge::triangles, and TRUE.
Referenced by check_edge().

| static void check_surface_edge | ( | GtsEdge * | e, |
| gpointer * | data | ||
| ) | [static] |
Definition at line 1621 of file boolean.c.
References FALSE, gts_edge_face_number(), GTS_OBJECT, and ok.
Referenced by gts_surface_inter_check().

| static void connect_interior_loop | ( | GtsSegment * | start, |
| GSList ** | interior, | ||
| GSList ** | bloops, | ||
| GtsSurface * | surface, | ||
| GtsPoint * | o | ||
| ) | [static] |
Definition at line 1015 of file boolean.c.
References c, connection(), _GtsSurface::edge_class, FALSE, gts_edge_new(), GTS_POINT, GTS_SEGMENT, loop_orientation(), NEXT, reverse(), s, and _GtsSegment::v2.
Referenced by triangulate_boundary_interior().

| static GtsSegment* connection | ( | GtsPoint * | p, |
| GSList * | interior, | ||
| GSList * | bloops, | ||
| GtsPoint * | o | ||
| ) | [static] |
Definition at line 971 of file boolean.c.
References GTS_POINT, is_inside_wedge(), NEXT, s, segment_intersects(), _GtsSegment::v1, and _GtsSegment::v2.
Referenced by ActionConnection(), AddAllRats(), block_hook_cb(), CollectSubnets(), connect_interior_loop(), CreateRouteData(), import_clusters(), ProcNetlist(), smartdisperse(), and TransferNet().

| static void create_edges | ( | GtsSegment * | s, |
| GtsSurface * | surface | ||
| ) | [static] |
Definition at line 1456 of file boolean.c.
References _GtsSurface::edge_class, gts_edge_new(), GTS_OBJECT, _GtsSegment::v1, and _GtsSegment::v2.
Referenced by gts_surface_inter_new().

| static GtsEdgeClass * edge_inter_class | ( | void | ) | [static] |
Definition at line 107 of file boolean.c.
References gts_constraint_class(), GTS_OBJECT_CLASS, and gts_object_class_new().
Referenced by edge_inter_new().

| static EdgeInter * edge_inter_new | ( | GtsVertex * | v1, |
| GtsVertex * | v2, | ||
| GtsTriangle * | t1, | ||
| GtsTriangle * | t2 | ||
| ) | [static] |
Definition at line 128 of file boolean.c.
References EDGE_INTER, edge_inter_class(), GTS_EDGE_CLASS, and gts_edge_new().
Referenced by intersect_edges(), and reverse().

| static void free_edge_list | ( | GtsObject * | o | ) | [static] |
Definition at line 1546 of file boolean.c.
References _GtsObject::reserved.
Referenced by gts_surface_inter_new().
| static void free_glist | ( | GtsObject * | o | ) | [static] |
Definition at line 492 of file boolean.c.
References gts_object_reset_reserved(), and _GtsObject::reserved.
Referenced by gts_surface_intersection().

| static void free_slist | ( | GtsObject * | o | ) | [static] |
Definition at line 486 of file boolean.c.
References _GtsObject::reserved.
Referenced by gts_surface_intersection().
| gboolean gts_surface_foreach_intersecting_face | ( | GtsSurface * | s, |
| GtsBBTreeTraverseFunc | func, | ||
| gpointer | data | ||
| ) |
gts_surface_foreach_intersecting_face: : a GtsSurface. : a GtsBBTreeTraverseFunc. : user data to pass to .
Calls for each intersecting pair of faces of .
Returns: TRUE if was called at least once, FALSE otherwise.
Definition at line 1945 of file boolean.c.
References FALSE, gts_bb_tree_destroy(), gts_bb_tree_surface(), gts_bb_tree_traverse_overlapping(), self_intersecting(), and TRUE.
Referenced by gts_surface_is_self_intersecting().

| void gts_surface_inter_boolean | ( | GtsSurfaceInter * | si, |
| GtsSurface * | surface, | ||
| GtsBooleanOperation | op | ||
| ) |
gts_surface_inter_boolean: : a GtsSurfaceInter. : a GtsSurface. : a GtsBooleanOperation.
Adds to the part of the surface described by and .
Definition at line 1847 of file boolean.c.
References _GtsSurfaceInter::edges, GTS_1_IN_2, GTS_1_OUT_2, GTS_2_IN_1, GTS_2_OUT_1, gts_edge_is_boundary(), gts_face_has_parent_surface(), GTS_OBJECT, gts_object_reset_reserved(), gts_surface_foreach_face(), mark_edge(), _GtsSurfaceInter::s1, _GtsSurfaceInter::s2, triangle_orientation(), _GtsEdge::triangles, and walk_faces().

| gboolean gts_surface_inter_check | ( | GtsSurfaceInter * | si, |
| gboolean * | closed | ||
| ) |
gts_surface_inter_check: : a GtsSurfaceInter. : is set to TRUE if ->edges is a closed curve, FALSE otherwise.
Returns: TRUE if the curve described by is an orientable manifold, FALSE otherwise.
Definition at line 1732 of file boolean.c.
References check_edge(), check_surface_edge(), _GtsSurfaceInter::edges, FALSE, gts_object_reset_reserved(), gts_surface_foreach_edge(), mark_edge(), ok, _GtsSurfaceInter::s1, _GtsSurfaceInter::s2, and TRUE.

| GtsSurfaceInterClass* gts_surface_inter_class | ( | void | ) |
gts_surface_inter_class:
Returns: the GtsSurfaceInterClass.
Definition at line 65 of file boolean.c.
References gts_object_class(), gts_object_class_new(), surface_inter_class_init(), and surface_inter_init().
Referenced by gts_surface_intersection(), and surface_inter_destroy().

| GtsSurfaceInter* gts_surface_inter_new | ( | GtsSurfaceInterClass * | klass, |
| GtsSurface * | s1, | ||
| GtsSurface * | s2, | ||
| GNode * | faces_tree1, | ||
| GNode * | faces_tree2, | ||
| gboolean | is_open1, | ||
| gboolean | is_open2 | ||
| ) |
gts_surface_inter_new: : a GtsSurfaceInterClass. : a GtsSurface. : a GtsSurface. : a bounding box tree (see gts_bb_tree_new()) for the faces of . : a bounding box tree for the faces of . : whether is an "open" surface. : whether is an "open" surface.
When triangulating the cut faces, the new faces inherit the attributes of these original faces through their attributes() method.
Returns: a new GtsSurfaceInter describing the intersection of and .
Definition at line 1570 of file boolean.c.
References create_edges(), _GtsSurface::edge_class, _GtsSurface::face_class, free_edge_list(), GTS_OBJECT, gts_object_destroy(), gts_surface_class(), gts_surface_foreach_edge(), gts_surface_foreach_face(), gts_surface_new(), s, _GtsSurfaceInter::s1, _GtsSurfaceInter::s2, surface_inter_new(), triangulate_face(), and _GtsSurface::vertex_class.

| GSList* gts_surface_intersection | ( | GtsSurface * | s1, |
| GtsSurface * | s2, | ||
| GNode * | faces_tree1, | ||
| GNode * | faces_tree2 | ||
| ) |
gts_surface_intersection: : a GtsSurface. : a GtsSurface. : a bounding box tree (see gts_bb_tree_new()) for the faces of . : a bounding box tree for the faces of .
Returns: a list of GtsEdge defining the curve intersection of the two surfaces.
Definition at line 510 of file boolean.c.
References _GtsSurfaceInter::edges, free_glist(), free_slist(), GTS_OBJECT, gts_object_destroy(), gts_surface_foreach_edge(), gts_surface_foreach_face(), gts_surface_inter_class(), _GtsSurfaceInter::s1, _GtsSurfaceInter::s2, and surface_inter_new().

| GtsSurface* gts_surface_is_self_intersecting | ( | GtsSurface * | s | ) |
gts_surface_is_self_intersecting: : a GtsSurface.
Returns: a new GtsSurface containing the faces of which are self-intersecting or NULL if no faces of are self-intersecting.
Definition at line 1982 of file boolean.c.
References add_intersecting(), _GtsSurface::edge_class, _GtsSurface::face_class, GTS_OBJECT, gts_object_destroy(), GTS_SURFACE_CLASS, gts_surface_foreach_intersecting_face(), gts_surface_new(), and _GtsSurface::vertex_class.

| static GSList* interior_loops | ( | GSList * | interior | ) | [static] |
Definition at line 833 of file boolean.c.
References INTERIOR, IS_SET, NEXT, next_flag(), prev_flag(), RELEVANT, reverse(), s, SET, TRUE, UNSET, and _GtsSegment::v1.
Referenced by triangulate_boundary_interior().

| static void intersect_edges | ( | GtsBBox * | bb1, |
| GtsBBox * | bb2, | ||
| GtsSurfaceInter * | si | ||
| ) | [static] |
Definition at line 374 of file boolean.c.
References _GtsBBox::bounded, _GtsTriangle::e1, _GtsTriangle::e2, _GtsTriangle::e3, edge_inter_new(), _GtsSurfaceInter::edges, GTS_EDGE, GTS_FACE, GTS_OBJECT, gts_surface_add_face(), GTS_TRIANGLE, intersection_orientation(), intersects(), _GtsSurfaceInter::s1, _GtsSurfaceInter::s2, and UPDATE_ORIENTATION.
Referenced by surface_inter_new().

| static gint intersection_orientation | ( | GtsTriangle * | t1, |
| GtsEdge * | e, | ||
| GtsTriangle * | t2 | ||
| ) | [static] |
Definition at line 352 of file boolean.c.
References GTS_POINT, gts_point_orientation_3d_sos(), gts_triangle_vertices(), and gts_triangle_vertices_edges().
Referenced by intersect_edges().

| static GtsVertex* intersects | ( | GtsEdge * | e, |
| GtsTriangle * | t, | ||
| GtsSurface * | s | ||
| ) | [static] |
Definition at line 321 of file boolean.c.
References add_edge_inter(), GTS_IS_NEDGE, GTS_IS_NFACE, GTS_IS_NVERTEX, GTS_NAME_LENGTH, GTS_NEDGE, GTS_NFACE, GTS_NVERTEX, GTS_OBJECT, GTS_POINT_CLASS, GTS_SEGMENT, GTS_VERTEX, _GtsVertexClass::intersection_attributes, segment_triangle_intersection(), and _GtsSurface::vertex_class.
Referenced by intersect_edges().

| static gboolean is_inside_wedge | ( | GtsSegment * | s1, |
| GtsSegment * | s2, | ||
| GtsPoint * | p, | ||
| GtsPoint * | o | ||
| ) | [static] |
Definition at line 951 of file boolean.c.
References FALSE, GTS_POINT, ORIENTATION, ORIENTED_VERTICES, TRUE, _GtsSegment::v1, and _GtsSegment::v2.
Referenced by connection().
| static gdouble loop_orientation | ( | GtsSegment * | start, |
| GtsPoint * | p, | ||
| GtsPoint * | o | ||
| ) | [static] |
Definition at line 993 of file boolean.c.
References GTS_POINT, NEXT, ORIENTATION, and ORIENTED_VERTICES.
Referenced by connect_interior_loop().
| static void mark_edge | ( | GtsObject * | o, |
| gpointer | data | ||
| ) | [static] |
Definition at line 1638 of file boolean.c.
References _GtsObject::reserved.
Referenced by gts_surface_inter_boolean(), and gts_surface_inter_check().
| static void merge_duplicate | ( | GtsEdge * | e | ) | [static] |
Definition at line 1388 of file boolean.c.
References gts_edge_is_duplicate(), gts_edge_replace(), GTS_OBJECT, and gts_object_destroy().
Referenced by triangulate_boundary_interior().

| static gboolean new_ear | ( | GtsSegment * | s, |
| Ear * | e, | ||
| GtsSegment * | start, | ||
| guint | sloppy, | ||
| GtsPoint * | o | ||
| ) | [static] |
Definition at line 1212 of file boolean.c.
References FALSE, GTS_POINT, gts_segment_connect, gts_vertices_are_connected(), NEXT, ORIENTATION, ORIENTED_VERTICES, s, _Ear::s1, _Ear::s2, _Ear::s3, triangle_intersects_segments(), TRUE, _GtsSegment::v1, _Ear::v1, _GtsSegment::v2, _Ear::v2, and _Ear::v3.
Referenced by triangulate_loop().

| static GtsFace* next_compatible_face | ( | GtsEdge * | e, |
| GtsFace * | f, | ||
| GtsSurface * | s1, | ||
| GtsSurface * | s2 | ||
| ) | [static] |
Definition at line 1768 of file boolean.c.
References gts_edge_is_boundary(), gts_face_has_parent_surface(), GTS_IS_FACE, GTS_TRIANGLE, gts_triangles_are_compatible(), and _GtsEdge::triangles.
Referenced by walk_faces().

| static GtsSegment* next_flag | ( | GtsSegment * | s, |
| CurveFlag | flag | ||
| ) | [static] |
Definition at line 756 of file boolean.c.
References IS_SET, _GtsVertex::segments, and _GtsSegment::v2.
Referenced by interior_loops().
| static GtsSegment* next_interior | ( | GtsVertex * | v | ) | [static] |
Definition at line 768 of file boolean.c.
References INTERIOR, IS_SET, s, _GtsVertex::segments, and _GtsSegment::v1.
Referenced by boundary_loops().
| static gboolean point_in_wedge | ( | GtsPoint * | p1, |
| GtsPoint * | p2, | ||
| GtsPoint * | p3, | ||
| GtsPoint * | p, | ||
| gboolean | closed, | ||
| GtsPoint * | o | ||
| ) | [static] |
Definition at line 1112 of file boolean.c.
References FALSE, ORIENTATION, and TRUE.
Referenced by triangle_intersects_segments().
| static GtsSegment* prev_flag | ( | GtsSegment * | s, |
| CurveFlag | flag | ||
| ) | [static] |
Definition at line 744 of file boolean.c.
References IS_SET, _GtsVertex::segments, and _GtsSegment::v1.
Referenced by interior_loops().
| static GtsSegment* prev_interior | ( | GtsVertex * | v | ) | [static] |
Definition at line 782 of file boolean.c.
References INTERIOR, IS_SET, s, _GtsVertex::segments, and _GtsSegment::v2.
Referenced by boundary_loops().
| static GtsSegment* reverse | ( | GtsSegment * | start, |
| gboolean | interior, | ||
| gboolean * | isloop | ||
| ) | [static] |
Definition at line 796 of file boolean.c.
References EDGE_INTER, edge_inter_new(), FALSE, GTS_SEGMENT, INTERIOR, IS_EDGE_INTER, NEXT, s, SET, TRUE, _GtsSegment::v1, and _GtsSegment::v2.
Referenced by connect_interior_loop(), and interior_loops().

| static GtsSegment* segment_intersects | ( | GtsPoint * | p1, |
| GtsPoint * | p2, | ||
| GSList * | i, | ||
| GtsPoint * | o | ||
| ) | [static] |
Definition at line 924 of file boolean.c.
References GTS_POINT, ORIENTATION_SOS, s, _GtsSegment::v1, and _GtsSegment::v2.
Referenced by connection().
| static gboolean segment_intersects1 | ( | GtsPoint * | p1, |
| GtsPoint * | p2, | ||
| GtsPoint * | p3, | ||
| GtsPoint * | p4, | ||
| gboolean | closed, | ||
| GtsPoint * | o | ||
| ) | [static] |
Definition at line 1148 of file boolean.c.
References FALSE, ORIENTATION_SOS, and TRUE.
Referenced by triangle_intersects_segments().
| static GtsPoint* segment_triangle_intersection | ( | GtsSegment * | s, |
| GtsTriangle * | t, | ||
| GtsPointClass * | klass | ||
| ) | [static] |
Definition at line 141 of file boolean.c.
References B, c, GTS_NEDGE, GTS_NFACE, GTS_POINT, gts_point_new(), gts_point_orientation_3d(), gts_point_orientation_3d_sos(), gts_triangle_vertices_edges(), _GtsSegment::v1, _GtsSegment::v2, _GtsPoint::x, _GtsPoint::y, and _GtsPoint::z.
Referenced by intersects(), and self_intersecting().

Definition at line 1894 of file boolean.c.
References _GtsBBox::bounded, _GtsTriangle::e1, _GtsTriangle::e2, _GtsTriangle::e3, GTS_OBJECT, gts_object_destroy(), gts_point_class(), GTS_SEGMENT, gts_segments_touch, segment_triangle_intersection(), and TRUE.
Referenced by gts_surface_foreach_intersecting_face().

| static void surface_inter_class_init | ( | GtsObjectClass * | klass | ) | [static] |
Definition at line 49 of file boolean.c.
References _GtsObjectClass::destroy, and surface_inter_destroy().
Referenced by gts_surface_inter_class().

| static void surface_inter_destroy | ( | GtsObject * | object | ) | [static] |
Definition at line 37 of file boolean.c.
References _GtsSurfaceInter::edges, GTS_OBJECT, GTS_OBJECT_CLASS, gts_object_destroy(), GTS_SURFACE_INTER, gts_surface_inter_class(), _GtsSurfaceInter::s1, and _GtsSurfaceInter::s2.
Referenced by surface_inter_class_init().

| static void surface_inter_init | ( | GtsSurfaceInter * | si | ) | [static] |
Definition at line 54 of file boolean.c.
References _GtsSurfaceInter::edges, _GtsSurfaceInter::s1, and _GtsSurfaceInter::s2.
Referenced by gts_surface_inter_class().
| static GtsSurfaceInter* surface_inter_new | ( | GtsSurfaceInterClass * | klass, |
| GtsSurface * | s1, | ||
| GtsSurface * | s2, | ||
| GNode * | faces_tree1, | ||
| GNode * | faces_tree2 | ||
| ) | [static] |
Definition at line 460 of file boolean.c.
References _GtsSurface::edge_class, _GtsSurface::face_class, gts_bb_tree_traverse_overlapping(), GTS_OBJECT, GTS_OBJECT_CLASS, gts_object_new(), gts_surface_class(), GTS_SURFACE_INTER, gts_surface_new(), intersect_edges(), _GtsSurfaceInter::s1, _GtsSurfaceInter::s2, and _GtsSurface::vertex_class.
Referenced by gts_surface_inter_new(), and gts_surface_intersection().

| static GtsSegment* triangle_intersects_segments | ( | GtsPoint * | p1, |
| GtsPoint * | p2, | ||
| GtsPoint * | p3, | ||
| gboolean | closed, | ||
| GtsSegment * | start, | ||
| GtsPoint * | o | ||
| ) | [static] |
Definition at line 1166 of file boolean.c.
References GTS_POINT, NEXT, point_in_wedge(), s, segment_intersects1(), _GtsSegment::v1, and _GtsSegment::v2.
Referenced by new_ear().

| static gint triangle_orientation | ( | GtsTriangle * | t, |
| GtsEdge * | e | ||
| ) | [static] |
Definition at line 1643 of file boolean.c.
References _GtsTriangle::e1, _GtsTriangle::e2, _GtsTriangle::e3, GTS_SEGMENT, _GtsSegment::v1, and _GtsSegment::v2.
Referenced by check_orientation(), and gts_surface_inter_boolean().
| static gint triangle_point_orientation | ( | GtsTriangle * | t1, |
| GtsTriangle * | t2, | ||
| gint | o1, | ||
| GtsPoint * | p | ||
| ) | [static] |
Definition at line 228 of file boolean.c.
References _GtsTriangle::e1, GTS_POINT, gts_point_orientation_3d_sos(), GTS_SEGMENT, gts_triangle_vertex, and triangle_triangle_orientation().
Referenced by add_edge_inter().

| static gint triangle_triangle_orientation | ( | GtsPoint * | p1, |
| GtsPoint * | p2, | ||
| GtsPoint * | p3, | ||
| GtsPoint * | p4, | ||
| GtsPoint * | p5, | ||
| GtsPoint * | p6 | ||
| ) | [static] |
Definition at line 205 of file boolean.c.
References gts_point_orientation_3d_sos().
Referenced by triangle_point_orientation().

| static void triangulate_boundary_interior | ( | GSList * | boundary, |
| GSList * | interior, | ||
| GtsSurface * | s, | ||
| GtsPoint * | o | ||
| ) | [static] |
Definition at line 1397 of file boolean.c.
References boundary_loops(), connect_interior_loop(), INTERIOR, interior_loops(), merge_duplicate(), RELEVANT, SET, and triangulate_loop().
Referenced by triangulate_face().

| static void triangulate_face | ( | GtsTriangle * | t, |
| GtsSurface * | surface | ||
| ) | [static] |
Definition at line 1501 of file boolean.c.
References add_boundary(), _GtsTriangle::e1, _GtsTriangle::e2, _GtsTriangle::e3, _GtsSurface::edge_class, _GtsSurface::face_class, fp, GTS_OBJECT, gts_object_attributes(), gts_object_destroy(), GTS_POINT, gts_point_class(), gts_point_new(), GTS_SEGMENT, gts_surface_class(), gts_surface_foreach_face(), gts_surface_merge(), gts_surface_new(), gts_triangle_normal(), triangulate_boundary_interior(), _GtsSurface::vertex_class, _GtsPoint::x, x, _GtsPoint::y, y, and _GtsPoint::z.
Referenced by gts_surface_inter_new().

| static void triangulate_loop | ( | GtsSegment * | start, |
| GtsSurface * | surface, | ||
| GtsPoint * | o | ||
| ) | [static] |
Definition at line 1276 of file boolean.c.
References _GtsSurface::edge_class, f, _GtsSurface::face_class, fp, GTS_EDGE, gts_edge_new(), gts_face_new(), GTS_IS_EDGE, GTS_SEGMENT, gts_surface_add_face(), GTS_TRIANGLE, INTERIOR, new_ear(), NEXT, RELEVANT, s, _Ear::s1, _Ear::s2, _Ear::s3, UNSET, _Ear::v1, _Ear::v2, and _Ear::v3.
Referenced by triangulate_boundary_interior().

| static void walk_faces | ( | GtsEdge * | e, |
| GtsFace * | f, | ||
| GtsSurface * | s1, | ||
| GtsSurface * | s2, | ||
| GtsSurface * | s | ||
| ) | [static] |
Definition at line 1801 of file boolean.c.
References _GtsTriangle::e1, _GtsTriangle::e2, _GtsTriangle::e3, gts_fifo_destroy(), gts_fifo_new(), gts_fifo_pop(), gts_fifo_push(), GTS_OBJECT, gts_surface_add_face(), GTS_TRIANGLE, next_compatible_face(), and s.
Referenced by gts_surface_inter_boolean().
