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().