(adjacncy.c:695)
Prototype:
void BoolClnAdjacencies(IPObjectStruct *PObj)
Description:
Clean the adjacency pointers in the given polygonal model.
Parameters:
PObj: | Polygon object to clean adjacency information.
|
---|
Returned Value:
See Also:
BoolGenAdjacencies
Keywords:
(bool2low.c:430)
Prototype:
IPVertexStruct *BoolCutPolygonAtRay(IPPolygonStruct *Pl, IrtPtType Pt)
Description:
Finds the intersection of the ray fired from Pt to +X direction with the
given polygon. Note Pt MUST be in the polygon. Two vertices equal to
ray/polygon intersection point are added to polygon vertex list, and a
pointer to the first one is also returned.
The polygon is NOT assumed to be convex and we look for the minimum X
intersection. The polygon might not be convex as a result of combining
some other closed loop before we got to do this test.
Parameters:
Pl: | The polygon to compute the ray intersection with.
|
---|
Pt: | The origin of the ray point.
|
---|
Returned Value:
IPVertexStruct *: The added vertex on Pl where the intersection with
the ray occurred.
|
---|
Keywords:
Booleans
(adjacncy.c:908)
Prototype:
void BoolDebugPrintAdjacencies(IPObjectStruct *PObj)
Description:
Prints the adjacency information of an object.
Parameters:
PObj: | To debug print its adjacency information.
|
---|
Returned Value:
Keywords:
(bool_err.c:61)
Prototype:
const char *BoolDescribeError(BoolFatalErrorType ErrorNum)
Description:
Returns a string describing a the given error. Errors can be raised by
any member of this bool library as well as other users. Raised error will
cause an invocation of BoolFatalError function which decides how to handle
this error. BoolFatalError can for example, invoke this routine with the
error type, print the appropriate message and quit the program.
Parameters:
ErrorNum: | Type of the error that was raised.
|
---|
Returned Value:
const char *: A string describing the error type.
|
---|
Keywords:
error handling
(bool-hi.c:1479)
Prototype:
void BoolDfltFatalError(BoolFatalErrorType ErrID)
Description:
Defalu fatal error trapping rotuine of the Boolean library.
Parameters:
ErrID: | Error type that was raised.
|
---|
Returned Value:
See Also:
BoolSetFatalErrorFunc
Keywords:
error handling
(bool2low.c:962)
Prototype:
IPObjectStruct *BoolExtractPolygons(IPObjectStruct *PObj, int AinB)
Description:
This routine coordinates all the extraction of the polygons from the
intersecting lists. Does it in the following steps:
1. Mark all polygons with no intersection at all as complete polygons.
(this is because this polygon will be totally in or out, according
to inter-polygon adjacencies propagation...)
Also mark them as undefined (if in output or undefined) yet.
Uses IPPolygonStruct Tags to save these bits.
2. do
2.1. Convert the unordered segment list of each polygon to closed loops
(if create a hole in polygon) or open (if crosses its boundary).
2.2. Order the open loops along the perimeter of the polygon (note
these loops cannot intersect. For example (5 vertices polygon):
-----------------------------L3
| ---------------L1 -----L2 | --------L4 --L5
| | | | | | | | | |
P0 ------ P1 ------- P2 ----- P3 -------- P4 ------ P5 -------- P0
Note L1, L2 are enclosed in L3 loop, and that the order is
circular.
2.3. "Break" the polygon at each open loop that has no enclosed loops
in it. For example we can start at L1, L2, L4, L5 and then L3.
"Break" means - replace the vertex chain between the two loop end
points, with the loops itself. Depends upon the relation required
we may need to output a new polygon form from the deleted chain
and that loop. In addition we may form a new polygon from last
loop and was was left from the original polygon
For each formed polygon, for each complete edge of it (i.e. edge
which was originally in the polygon) test the adjacent polygon
if it is complete (as marked in 1.) and if in or undefined (marked
undefined in 1.) is still undefined:
2.3.1. set it to be in.
2.3.2. push it on adjacency stack.
2.4. For each closed loop - find in which polygon (from polygons
created in 2.3.) it is enclosed, and decompose it.
3. While adjacencies stack not empty do:
3.1. pop top polygon from stack and output it.
3.2. For each of its edges (which obviousely must be complete edges)
if adjacent polygon is complete and undefined:
3.3.1. set it to be in.
3.3.2. push it on adjacency stack.
3.3 go back to 3.
The above algorithm defines in as in output, but dont be confused with
the required inter-object AinB (or AoutB if FALSE), which used to
determine which side of the trimming loop should be output.
Note this routine may return non-convex polygons (but marked as so) even
though the input for the booleans must be convex polygons only!
In order to keep the given object unchanged, a whole new copy off the
polygon list is made. The polygons of the list that are not in the output
are freed: a global list of all polygons (pointers) is used to scan them
in the end and free the unused ones (list PolysPtr).
Parameters:
PObj: | Object that need to be rebuilt according to the intersection
curves that were found, both closed and open loops.
|
---|
AinB: | Type of inclusion/exclusion requested.
|
---|
Returned Value:
IPObjectStruct *: The newly created clipped object.
|
---|
Keywords:
Booleans
(bool-2d.c:273)
Prototype:
int BoolFilterCollinearities(IPPolygonStruct *Pl)
Description:
Filters out collinear edges and duplicated vertices, in the given
polygon.
Parameters:
Pl: | To filter, in place. The polygon is assumed to have a circular
vertex list.
|
---|
Returned Value:
int: TRUE if the polygon has been modified, FALSE otherwise.
|
---|
Keywords:
(adjacncy.c:102)
Prototype:
int BoolGenAdjacencies(IPObjectStruct *PObj)
Description:
Routine to generate adjacencies to the given object.
Note an edge might be only partially adjacent to another edge, and a
second attempt is made to find (again only part of - see below) them. Any
case, FALSE will be returned as there is no way we can say the object is
perfectly closed!
This is the only routine to generate the adjacencies of a geometric
object. These adjacencies are needed for the Boolean operations on them.
Algorithm: for each edge, for each polygon in the object, the edges are
sorted according to the key defined by EdgeKey routine (sort in hash tbl).
A second path on the table is made to match common keys edges and set the
pointers from one to another. Note that each edge is common to exactly 2
faces if it is internal, or exactly 1 face if it is on the border (if the
object is open).
Parameters:
PObj: | he polygonal object to compute the adjacency information for.
|
---|
Returned Value:
int: TRUE if all adjacencies were resolved, or the object is completely
closed.
|
---|
See Also:
BoolGetAdjEdge
BoolClnAdjacencies
Keywords:
adjacency
topology
(adjacncy.c:852)
Prototype:
IPVertexStruct *BoolGetAdjEdge(IPVertexStruct *V)
Description:
Given a polygonal mesh with adjacent information, find the adjacent edge
(VAdj, VAdj->Pnext) that is adjacent to edge (V, V->Pnext), if any.
Parameters:
V: | Vertex of a mesh defining edge (V, V->Pnext) to extract its
adjacent edge, if any.
|
---|
Returned Value:
IPVertexStruct *: First vertex of adjacent edge to edge (V, V->Pnext) or
NULL if none.
|
---|
See Also:
BoolGenAdjacencies
Keywords:
(adjacncy.c:816)
Prototype:
IPPolygonStruct *BoolGetDisjointPart(IPObjectStruct *PObj, int Index)
Description:
Get the disjoint part number Index from object PObj.
Parameters:
PObj: | Object to extract part number Index from.
|
---|
Index: | Index of part to fetch from PObj.
|
---|
Returned Value:
IPPolygonStruct *: Extract polygonal list with disjoint number Index.
|
---|
See Also:
BoolMarkDisjointParts
Keywords:
(bool1low.c:918)
Prototype:
IPPolygonStruct *BoolInterPolyPoly(IPPolygonStruct *Pl1, IPPolygonStruct *Pl2)
Description:
Routine to intersect polygon Pl1, with polygon Pl2. If found common
intersection, that segment will be added to the InterSegmentStruct list
saved in Pl1 PAux list.
Note that as the two polygons convex, at most one line segment can
result from such intersection (of two non coplanar polygons).
Algorithm: intersect all Pl2 edges with Pl1 plane. If found that
(exactly) two vertices (one segment) of Pl2 do intersect Pl1 plane then:
Perform clipping of the segment against Pl1. If result is not empty, add
the result segment to Pl1 InterSegmentStruct list (saved at PAux of
polygon - see IPPolygonStruct).
Parameters:
Pl1: | First polygon to compute intersection for.
|
---|
Pl2: | Second polygon to compute intersection for.
|
---|
Returned Value:
IPPolygonStruct *: The intersection segment, if any, NULL otherwise.
|
---|
Keywords:
(bool1low.c:1310)
Prototype:
int BoolLoopsFromInterList(IPPolygonStruct *Pl,
InterSegListStruct **PClosed,
InterSegListStruct **POpen)
Description:
Given a polygon with the intersection list, creates the polylines
loop(s) out of it, which can be one of the two:
1. Closed loop - all the intersections create a loop in one polygon.
2. Open polyline - if the intersections cross the polygon boundary. In
this case the two end point of the polyline, must lay on polygon
boundary.
In both cases, the polyline will be as follows:
First point at first list element at PtSeg[0] (see InterSegmentStruct).
Second point at first list element at PtSeg[1] (see InterSegmentStruct).
Point i at list element (i-1) at PtSeg[0] (PtSeg[1] is not used!).
In the closed loop case the last point is equal to first.
Both cases returns NULL terminated list.
Parameters:
Pl: | Polygon with intersection information in its PAux slot.
|
---|
PClosed: | To be updated with the closed loops found in Pl.
|
---|
POpen: | To be updated with the open loops found in Pl.
|
---|
Returned Value:
Keywords:
(adjacncy.c:731)
Prototype:
int BoolMarkDisjointParts(IPObjectStruct *PObj)
Description:
Mark polygons in the given object based on their association with
different disjoint object parts.
Parameters:
PObj: | To anaylize for different disjoint parts.
|
---|
Returned Value:
int: Number of disjoint parts.
|
---|
See Also:
BoolGetDisjointPart
Keywords:
(bool-hi.c:1450)
Prototype:
BoolFatalErrorFuncType BoolSetFatalErrorFunc(BoolFatalErrorFuncType ErrFunc)
Description:
Sets the fatal error trapping routine of the boolean library.
Parameters:
ErrFunc: | New error trapping function to use.
|
---|
Returned Value:
BoolFatalErrorFuncType: Old error trapping function.
|
---|
See Also:
BoolDfltFatalError
Keywords:
error handling
(bool-hi.c:1390)
Prototype:
int BoolSetHandleCoplanarPoly(int HandleCoplanarPoly)
Description:
Controls if coplanar polygons should be handled or not.
Parameters:
HandleCoplanarPoly: | If TRUE, coplanar polygons are handled.
|
---|
Returned Value:
See Also:
BooleanOR
BooleanAND
BooleanSUB
BooleanCUT
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BoolSetPerturbAmount
Keywords:
Booleans
(bool-hi.c:1327)
Prototype:
int BoolSetOutputInterCurve(int OutputInterCurve)
Description:
Controls if intersection curves or full Boolean operation is to be
performed.
Parameters:
OutputInterCurve: | If TRUE only intersection curves are computed, If
false, full blown Boolean is applied.
|
---|
Returned Value:
See Also:
BooleanOR
BooleanAND
BooleanSUB
BooleanCUT
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BoolSetPerturbAmount
Keywords:
Booleans
(bool-hi.c:1421)
Prototype:
int BoolSetParamSurfaceUVVals(int HandleBoolParamSrfUVVals)
Description:
Controls if UV paprameter values of original surface should be returned.
Parameters:
HandleBoolParamSrfUVVals: | If TRUE, UV values are to be returned.
|
---|
Returned Value:
See Also:
BooleanOR
BooleanAND
BooleanSUB
BooleanCUT
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetPerturbAmount
Keywords:
Booleans
(bool-hi.c:1360)
Prototype:
IrtRType BoolSetPerturbAmount(IrtRType PerturbAmount)
Description:
Controls the perturbation amount, if any, of the second object to
improve the success likelihood. Perturbations are applied once the
Booleans return with an empty intersection.
Parameters:
PerturbAmount: | Perturbation amount of objects before reattempting
Booleans that ends up empty.
|
---|
Returned Value:
See Also:
BooleanOR
BooleanAND
BooleanSUB
BooleanCUT
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BoolSetOutputInterCurve
Keywords:
Booleans
(bool1low.c:688)
Prototype:
int BoolSetPolySortAxis(int PolySortAxis)
Description:
Routine to set polygonal sorting axis.
Parameters:
PolySortAxis: | Sorting axis. Either 0(x), 1 (y), or 2 (z).
|
---|
Returned Value:
Keywords:
Booleans
(bool1low.c:1574)
Prototype:
void BoolSortOpenInterList(IPPolygonStruct *Pl, InterSegListStruct **POpen)
Description:
Sorts the open loops of given polygon to an order that can be used in
subdividing into sub polygons later (see comment of BoolExtractPolygons).
This order is such that each loops will have no other loop between its
end points, if we walk along the polygon in the (linked list direction)
perimeter from one end to the other, before it. For example:
-----------------------------L3
| ---------------L1 -----L2 | --------L4 --L5
| | | | | | | | | |
P0 ------ P1 ------- P2 ----- P3 -------- P4 ------ P5 -------- P0
In this case, any order such that L1, L2 are before L3 will do. Obviously
this is not a total order, and they are few correct ways to sort it.
Algorithm:
For each open loop, for each of its two end, evaluate a IrtRType key for
the end point P between segment P(i) .. P(i+1) to be i + t, where:
t is the ratio (P - P(i)) / (P(i+1) - P(i)) . This maps the all perimeter
of the polygon onto 0..N-1, where N is number of vertices of that polygon.
Sort the keys, and while they are keys in data structure, search and
remove a consecutive pair of keys associated with same loop, and output it.
Note that each open loop point sequence is tested to be such that it
starts on the first point (first and second along vertex list) on polygon
perimeter, and the sequence end is on the second point, and the sequence
is reversed if not so. This order will make the replacement of the
perimeter from first to second points by the open loop much easier.
This may be real problem if there are two intersection points almost
identical - floating point errors may cause it to loop forever. We use
some reordering heuristics in this case, and return fatal error if fail!
Parameters:
Pl: | To sort the loops for.
|
---|
POpen: | The set of open loops. Updated in place.
|
---|
Returned Value:
Keywords:
(bool-2d.c:70)
Prototype:
IPPolygonStruct *Boolean2D(IPPolygonStruct *Pl1,
IPPolygonStruct *Pl2,
BoolOperType BoolOper)
Description:
Given two convex polygons assumed to be in the same plane, compute their
2D Boolean operation BoolOper and return it as a new polygon(s).
NULL is returned if an error occur (No intersection or invalid BoolOper).
Parameters:
Pl1: | First convex polygon to compute 2D Boolean for.
|
---|
Pl2: | Second convex polygon to compute 2D Boolean for.
|
---|
BoolOper: | Boolean operation requested (and, or, etc.)
|
---|
Returned Value:
IPPolygonStruct *: The resulting Boolean operation.
|
---|
See Also:
BooleanOR
BooleanAND
BooleanSUB
BooleanCUT
BooleanMERGE
BooleanNEG
BoolSetHandleCoplanarPoly
BoolSetOutputInterCurve
Boolean2DComputeInters
Keywords:
Booleans
(bool-2d.c:563)
Prototype:
Bool2DInterStruct *Boolean2DComputeInters(IPPolygonStruct *Poly1,
IPPolygonStruct *Poly2,
int HandlePolygons,
int DetectIntr)
Description:
Given two polygons/lines, Detect all edges in Pl1 that intersect with
edges in Pl2. Returned is the information about all intersections as a
Bool2DInter structure list.
Parameters:
Poly1, Poly2: | The two polygons/lines to intersect.
|
---|
HandlePolygons: | If polygons, needs to handle normals etc.
|
---|
DetectIntr: | If TRUE, return non NULL dummy pointer if the two polys
do indeed intersect. For detection of intersection!
|
---|
Returned Value:
Bool2DInterStruct *: Intersection information.
|
---|
See Also:
Boolean2D
Keywords:
Booleans
(bool-hi.c:483)
Prototype:
IPObjectStruct *BooleanAND(const IPObjectStruct *PObjIn1,
const IPObjectStruct *PObjIn2)
Description:
Performs a Boolean AND between two objects.
Parameters:
PObjIn1: | First object to perform the Boolean operation on.
|
---|
PObjIn2: | Second object to perform the Boolean operation on.
|
---|
Returned Value:
IPObjectStruct *: The result of the Boolean operation.
|
---|
See Also:
BooleanOR
BooleanSUB
BooleanCUT
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BooleanSELF
BooleanCONTOUR
BoolSetPerturbAmount
Keywords:
Booleans
(bool-hi.c:804)
Prototype:
IPObjectStruct *BooleanCONTOUR(const IPObjectStruct *PObjIn, IrtPlnType Plane)
Description:
Performs a contouring of the given poly object with the given plane.
Parameters:
PObjIn: | Object to perform the contouring operation on.
|
---|
Plane: | Plane to use in the contouring.
|
---|
Returned Value:
IPObjectStruct *: The result of the contouring operation.
|
---|
See Also:
BooleanMultiCONTOUR
BooleanOR
BooleanAND
BooleanSUB
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BooleanSELF
BooleanCUT
BoolSetPerturbAmount
Keywords:
Booleans
(bool-hi.c:717)
Prototype:
IPObjectStruct *BooleanCUT(const IPObjectStruct *PObjIn1,
const IPObjectStruct *PObjIn2)
Description:
Performs a Boolean CUT between two objects.
Parameters:
PObjIn1: | First object to perform the Boolean operation on.
|
---|
PObjIn2: | Second object to perform the Boolean operation on.
|
---|
Returned Value:
IPObjectStruct *: The result of the Boolean operation.
|
---|
See Also:
BooleanOR
BooleanAND
BooleanSUB
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BooleanSELF
BooleanCONTOUR
BoolSetPerturbAmount
Keywords:
Booleans
(bool-hi.c:1241)
Prototype:
IPPolygonStruct *BooleanComputeRotatedPolys(IPPolygonStruct *Pl,
int CopyOnePl,
IrtHmgnMatType RotMat)
Description:
Routine to optionally copy (if CpolyOnePl) a single polygon and rotate
according to the rotation matrix provided. If, however, CopyOnePl is False
all polygons in list are converted.
Parameters:
Pl: | Polygon(s) to transform. Assumed to be convex.
|
---|
CopyOnePl: | Should we copy? Also if FALSE Pl might be non convex!
|
---|
RotMat: | Transformation matrix.
|
---|
Returned Value:
IPPolygonStruct *: Transformed polygon(s).
|
---|
Keywords:
Booleans
(bool1low.c:224)
Prototype:
IPObjectStruct *BooleanLow1In2(IPObjectStruct *PObj1, IPObjectStruct *PObj2)
Description:
Finds the part of PObj1 which is in of PObj2:
Parameters:
PObj1: | First object of Boolean operation.
|
---|
PObj2: | Second object of Boolean operation.
|
---|
Returned Value:
IPObjectStruct *: Result of one in two.
|
---|
See Also:
BooleanLow1Out2
BooleanLowSelfInOut
Keywords:
Booleans
(bool1low.c:159)
Prototype:
IPObjectStruct *BooleanLow1Out2(IPObjectStruct *PObj1, IPObjectStruct *PObj2)
Description:
Finds the part of PObj1 which is out of PObj2:
Parameters:
PObj1: | First object of Boolean operation.
|
---|
PObj2: | Second object of Boolean operation.
|
---|
Returned Value:
IPObjectStruct *: Result of one out two.
|
---|
See Also:
BooleanLow1In2
BooleanLowSelfInOut
Keywords:
Booleans
(bool1low.c:276)
Prototype:
IPObjectStruct *BooleanLowSelfInOut(IPObjectStruct *PObj, int InOut)
Description:
Finds the part of PObj which is in/out of itself:
Parameters:
PObj: | Object of Boolean operation with itself (self intersection).
|
---|
InOut: | What are we looking for? in or out.
|
---|
Returned Value:
IPObjectStruct *: Result of Boolean in/out with self.
|
---|
See Also:
BooleanLow1Out2
BooleanLow1In2
Keywords:
self intersection
Booleans
(bool-hi.c:867)
Prototype:
IPObjectStruct *BooleanMERGE(const IPObjectStruct *PObjIn1,
const IPObjectStruct *PObjIn2)
Description:
Performs a Boolean MERGE between two objects.
Parameters:
PObjIn1: | First object to perform the Boolean operation on.
|
---|
PObjIn2: | Second object to perform the Boolean operation on.
|
---|
Returned Value:
IPObjectStruct *: The result of the Boolean operation.
|
---|
See Also:
BooleanOR
BooleanAND
BooleanSUB
BooleanCUT
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BooleanSELF
BooleanCONTOUR
BoolSetPerturbAmount
Keywords:
Booleans
(bool_multi_cntr.c:138)
Prototype:
IPObjectStruct *BooleanMultiCONTOUR(IrtRType CntrLevel,
BooleanMultiCntrGenInfoStruct *GI)
Description:
Performs multiple contouring of the given poly object with parallel
planes. Planes must be X/Y/Z constant.
Parameters:
CntrLevel: | Level to contour at.
|
---|
GI: | The local data for contouring as initialized by the init
function.
|
---|
Returned Value:
IPObjectStruct *: The result of the contouring operation.
|
---|
See Also:
BooleanCONTOUR
BooleanOR
BooleanAND
BooleanSUB
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BooleanSELF
BooleanCUT
BoolSetPerturbAmount
Keywords:
Booleans
(bool_multi_cntr.c:108)
Prototype:
void BooleanMultiCONTOURFree(BooleanMultiCntrGenInfoStruct *GI)
Description:
Initializes the multiple contouring of the given poly object with
parallel planes. Planes must be X/Y/Z constant.
Parameters:
GI: | The local data for contouring to ve freed.
|
---|
Returned Value:
See Also:
BooleanMultiCONTOUR
BooleanMultiCONTOURInit
BooleanCONTOUR
BooleanOR
BooleanAND
BooleanSUB
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BooleanSELF
BooleanCUT
BoolSetPerturbAmount
Keywords:
Booleans
(bool_multi_cntr.c:53)
Prototype:
BooleanMultiCntrGenInfoStruct *BooleanMultiCONTOURInit(
const IPObjectStruct *PObj,
int Axis)
Description:
Initializes the multiple contouring of the given poly object with
parallel planes. Planes must be X/Y/Z constant.
Parameters:
PObj: | Object to perform the multi-contouring operation on.
|
---|
Axis: | 0, 1, 2 for X/Y/Z constant planes to use.
|
---|
Returned Value:
BooleanMultiCntrGenInfoStruct *: Local data initialized for contouring.
|
---|
See Also:
BooleanMultiCONTOUR
BooleanMultiCONTOURFree
BooleanCONTOUR
BooleanOR
BooleanAND
BooleanSUB
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BooleanSELF
BooleanCUT
BoolSetPerturbAmount
Keywords:
Booleans
(bool-hi.c:922)
Prototype:
IPObjectStruct *BooleanNEG(const IPObjectStruct *PObjIn)
Description:
Performs a Boolean NEG of an objects.
Negation is simply reversing the direction of the plane equation of each
polygon - the simplest Boolean operation...
Parameters:
PObjIn: | Object to negate.
|
---|
Returned Value:
IPObjectStruct *: The result of the Boolean operation.
|
---|
See Also:
BooleanOR
BooleanAND
BooleanSUB
BooleanCUT
BooleanMERGE
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BooleanSELF
BooleanCONTOUR
BoolSetPerturbAmount
Keywords:
Booleans
(bool-hi.c:345)
Prototype:
IPObjectStruct *BooleanOR(const IPObjectStruct *PObjIn1,
const IPObjectStruct *PObjIn2)
Description:
Performs a Boolean OR between two objects.
Parameters:
PObjIn1: | First object to perform the Boolean operation on.
|
---|
PObjIn2: | Second object to perform the Boolean operation on.
|
---|
Returned Value:
IPObjectStruct *: The result of the Boolean operation.
|
---|
See Also:
BooleanAND
BooleanSUB
BooleanCUT
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BooleanSELF
BooleanCONTOUR
BoolSetPerturbAmount
Keywords:
Booleans
(bool1low.c:571)
Prototype:
int BooleanPrepObject(IPObjectStruct *PObj)
Description:
Routine to prepare the polygons before the Booleans: verify the plane
equations, and compute BBox for all polygons in provided object. Also,
the polygons are sorted in the list with according to their minimal BBox
value in GlblPolySortAxis axis.
Parameters:
PObj: | To prepare, in place.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
Keywords:
(bool-hi.c:984)
Prototype:
IPObjectStruct *BooleanSELF(const IPObjectStruct *PObjIn)
Description:
Performs a Boolean Self intersection operation.
Parameters:
PObjIn: | Object to perform the self intersecting Boolean operation on.
|
---|
Returned Value:
IPObjectStruct *: The result of the Boolean operation.
|
---|
See Also:
BooleanOR
BooleanAND
BooleanSUB
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BooleanCUT
BooleanCONTOUR
BoolSetPerturbAmount
Keywords:
Booleans
(bool-hi.c:595)
Prototype:
IPObjectStruct *BooleanSUB(const IPObjectStruct *PObjIn1,
const IPObjectStruct *PObjIn2)
Description:
Performs a Boolean SUBtracion between two objects.
Parameters:
PObjIn1: | First object to perform the Boolean operation on.
|
---|
PObjIn2: | Second object to perform the Boolean operation on.
|
---|
Returned Value:
IPObjectStruct *: The result of the Boolean operation.
|
---|
See Also:
BooleanOR
BooleanAND
BooleanCUT
BooleanMERGE
BooleanNEG
Boolean2D
BoolSetOutputInterCurve
BoolSetHandleCoplanarPoly
BoolSetPolySortAxis
BoolSetParamSurfaceUVVals
BooleanSELF
BooleanCONTOUR
BoolSetPerturbAmount
Keywords:
Booleans