(srfpgeom.c:248)
Prototype:
void IntrSrfHierarchyFreePreprocess(VoidPtr Handle)
Description:
Releases the pre processed data structed created by the function
IntrSrfHierarchyPreprocessSrf.
Parameters:
Handle: | As returned by IntrSrfHierarchyPreprocessSrf to release.
|
---|
Returned Value:
See Also:
IntrSrfHierarchyPreprocessSrf
IntrSrfHierarchyTestRay
IntrSrfHierarchyTestPt
Keywords:
ray surface intersection
(srfpgeom.c:89)
Prototype:
VoidPtr IntrSrfHierarchyPreprocessSrf(const CagdSrfStruct *Srf,
IrtRType FineNess)
Description:
Preprocess a surface for fast computation of ray-surface intersection.
Returns NULL if fails, otherwise a pointer to preprocessed data structure.
The preprocessed data is in fact a hierarchy of bounding boxes extracted
while the surface is being polygonized.
Parameters:
Srf: | To preprocess.
|
---|
FineNess: | Control on accuracy, the higher the finer.
The surface will be subdivided into approximately FineNess
regions in each of the two parametric directions.
|
---|
Returned Value:
VoidPtr: A handle on the preprocessed data, NULL if error.
|
---|
See Also:
IntrSrfHierarchyFreePreprocess
IntrSrfHierarchyTestRay
IntrSrfHierarchyTestPt
Keywords:
ray surface intersection
(srfpgeom.c:494)
Prototype:
CagdBType IntrSrfHierarchyTestPt(VoidPtr Handle,
CagdPType Pt,
CagdBType Nearest,
CagdUVType InterUV)
Description:
Computes the nearest/farthest location on the surface from point Pt.
Parameters:
Handle: | As returned by IntrSrfHierarchyPreprocessSrf.
|
---|
Pt: | To look for nearest/farthest location on the surface.
|
---|
Nearest: | TRUE for nearest, FALSE for farthest.
|
---|
InterUV: | The UV surface coordinates of the nearest/farthest surface
location is saved here.
|
---|
Returned Value:
CagdBType: TRUE if found min/max distance, FALSE otherwise.
|
---|
See Also:
IntrSrfHierarchyPreprocessSrf
IntrSrfHierarchyFreePreprocess
IntrSrfHierarchyTestRay
Keywords:
pt surface min/max distance
(srfpgeom.c:305)
Prototype:
CagdBType IntrSrfHierarchyTestRay(VoidPtr Handle,
CagdPType RayOrigin,
CagdVType RayDir,
CagdUVType InterUV)
Description:
Computes the first intersection of a given ray with the given surface,
if any. If TRUE is returned, the InterUV is updated to the interesection.
Parameters:
Handle: | As returned by IntrSrfHierarchyPreprocessSrf.
|
---|
RayOrigin: | tarting point of ray.
|
---|
RayDir: | Direction of ray.
|
---|
InterUV: | The UV surface coordinates of the first ray surface
intersection location is saved here.
|
---|
Returned Value:
CagdBType: TRUE if found intersection, FALSE otherwise.
|
---|
See Also:
IntrSrfHierarchyFreePreprocess
IntrSrfHierarchyPreprocessSrf
IntrSrfHierarchyTestPt
Keywords:
ray surface intersection
(scalimag.c:49)
Prototype:
IrtImgPixelStruct *IrtImgScaleImage(IrtImgPixelStruct *InImage,
int InMaxX,
int InMaxY,
int InAlpha,
int OutMaxX,
int OutMaxY,
int Order)
Description:
Scale an image by mapping it to a bivariate spline and resampling.
Parameters:
InImage: | A vector of RGBRGB... of size (MaxX+1) * (MaxY+1) * 3 or
NULL if failed.
If however, Alpha is available we have RGBARGBA and
InImage is actually IrtImgRGBAPxlStruct.
|
---|
InMaxX: | Maximum X of input image.
|
---|
InMaxY: | Maximum Y of input image.
|
---|
InAlpha: | If TRUE, we have alpha as well and InImage is actually
IrtImgRGBAPxlStruct.
|
---|
OutMaxX: | Maximum X of output image.
|
---|
OutMaxY: | Maximum Y of output image.
|
---|
Order: | Of the spline filer. 2 for a bilinear and the higher the
Order is the smoother the result will be.
|
---|
Returned Value:
IrtImgPixelStruct *: The scaled image as vector of RGBRGB (or RGBARGBA).
|
---|
See Also:
IrtImgReadImage
Keywords:
(plyround.c:391)
Prototype:
int User2PolyMeshRoundEdge(IPPolygonStruct *Pl1,
IPPolygonStruct *Pl2,
const IPPolygonStruct *Edge12,
IrtRType RoundRadius,
IrtRType RoundShape)
Description:
Given two meshes, Pl1 and Pl2, sharing common boundary edge(s), Edge12,
updated Pl1 and Pl2 in place and round them along Edge12.
Parameters:
Pl1, Pl2: | The two input meshes sharing edge Edge12 to round along.
in place.
|
---|
Edge12: | The common edge(s) to round along. Can be a list of edges
to round around all of them.
|
---|
RoundRadius: | he desired radius of the approximated blend.
|
---|
RoundShape: | Bias to affect the rounding size. 1.0 to have no affect,
and values larger (smaller) than 1.0 to enlarge (shrink)
the rounding size.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
GMPolyMeshSmoothing
Keywords:
(dtr3d2im.c:1463)
Prototype:
IPObjectStruct *User3DDither2Images(const char *Image1Name,
const char *Image2Name,
int DitherSize,
int MatchWidth,
int Negate,
int AugmentContrast,
User3DSpreadType SpreadMethod,
IrtRType SphereRad,
IrtRType *AccumPenalty)
Description:
Build a 3D models consisting of spherical blobs that looks like the 1st
image (gray level) from the XZ plane and like the 2nd image from the YZ
plane. The entire constructed geometry is confined to a cube world
space of [max(ImageWidth, ImageHeight)]^3.
Parameters:
Image1Name: | Name of 1st image to load.
|
---|
Image2Name: | Name of 2nd image to load.
|
---|
DitherSize: | 1, 2, 3 or 4 for (1x1), (2x2), (3x3) or (4x4) dithering.
|
---|
MatchWidth: | Width to allow matching in a row:
between pos[i] to pos[i +/- k], k < MatchWidth.
|
---|
Negate: | TRUE to negate the images.
|
---|
AugmentContrast: | Number of iterations to add micro-pixels, to augment
the contrast, behind existing pixels. Zero to disable.
|
---|
SpreadMethod: | f allowed (MatchWidth >= RowSize), selects initial random
spread to use.
|
---|
SphereRad: | Radius of construct spherical blob, zero to return points.
|
---|
AccumPenalty: | Returns the accumulated error in the dithering-matching,
where zero designates no error.
|
---|
Returned Value:
IPObjectStruct *: Micro blobs if SphereRad > 0, center points, if = 0.
|
---|
See Also:
User3DDither3Images
Keywords:
(dtr3d3im.c:363)
Prototype:
IPObjectStruct *User3DDither3Images(const char *Image1Name,
const char *Image2Name,
const char *Image3Name,
int DitherSize,
int MatchWidth,
int Negate,
int AugmentContrast,
User3DSpreadType SpreadMethod,
IrtRType SphereRad,
IrtRType *AccumPenalty)
Description:
Build a 3D models consisting of points/spherical blobs that looks like
the 1st image (gray level) from the XZ plane, like the 2nd image from the
YZ plane and, optionally, like the 3rd image from the XY plane.
The entire constructed geometry is confined to a cube world space of
[ImageWidth]^3 (ImageWidth = ImageHeight).
Parameters:
Image1Name: | Name of 1st image to load.
|
---|
Image2Name: | Name of 2nd image to load.
|
---|
Image3Name: | Name of 3rd image to load.
Optional and can be NULL or a zero length string.
|
---|
DitherSize: | Dithering matrix size to use: 2, 3, or 4.
|
---|
MatchWidth: | Width to allow matching in a row:
between pos[i] to pos[i +/- k], k < MatchWidth.
|
---|
Negate: | TRUE to negate the images.
|
---|
AugmentContrast: | Redundancy level for the micro-pixels, to augment
the contrast, behind existing pixels. Zero to disable.
|
---|
SpreadMethod: | elects initial spread to use: Random, Diagonal, etc.
|
---|
SphereRad: | Radius of construct spherical blob, zero to return points.
|
---|
AccumPenalty: | Returns the accumulated error in the dithering-matching,
where zero designates no error. In level of achieved
covering.
|
---|
Returned Value:
IPObjectStruct *: Center points, in [ImageWidth]^3 space.
|
---|
See Also:
User3DDither3Images2
User3DDither2Images
Keywords:
(dtr3d3im.c:226)
Prototype:
IPObjectStruct *User3DDither3Images2(const char *Image1Name,
const char *Image2Name,
const char *Image3Name,
int DitherSize,
int MatchWidth,
int Negate,
int AugmentContrast,
User3DSpreadType SpreadMethod,
IrtRType SphereRad,
IrtRType *AccumPenalty)
Description:
Build a 3D models consisting of pixels/spherical blobs that looks like
the 1st image (gray level) from the XZ plane, like the 2nd image from the
YZ plane and like the 3rd image from the XY plane.
The entire constructed geometry is confined to a cube world space of
[ImageWidth]^3 (ImageWidth = ImageHeight).
Parameters:
Image1Name: | Name of 1st image to load.
|
---|
Image2Name: | Name of 2nd image to load.
|
---|
Image3Name: | Name of 3rd image to load.
|
---|
DitherSize: | 2 or 3 for (2x2x2) or (3x3x3) dithering matrices.
|
---|
MatchWidth: | Width to allow matching in a row:
between pos[i] to pos[i +/- k], k < MatchWidth.
|
---|
Negate: | TRUE to negate the images.
|
---|
AugmentContrast: | Number of iterations to add micro-pixels, to augment
the contrast, behind existing pixels. Zero to disable.
|
---|
SpreadMethod: | f allowed (MatchWidth >= RowSize), selects initial random
spread to use.
|
---|
SphereRad: | Radius of construct spherical blob, zero to return points.
|
---|
AccumPenalty: | Returns the accumulated error in the dithering-matching,
where zero designates no error.
|
---|
Returned Value:
IPObjectStruct *: Center points.
|
---|
See Also:
User3DDither3Images
Keywords:
(dtr3d2im.c:822)
Prototype:
IPVertexStruct *User3DDitherSetXYTranslations(IPVertexStruct *Vrtcs)
Description:
Adds small sub pixels' shifts to the micro pixels in the XY direction.
Parameters:
Vrtcs: | Pixels to shift a tad, in place.
|
---|
Returned Value:
IPVertexStruct *: Translated pixels, in place.
|
---|
Keywords:
(imgshd3d.c:1022)
Prototype:
int **User3DMicroBlobsCreateRandomMatrix(int Size,
User3DSpreadType BlobSpreadMethod)
Description:
Creates a matrix of size (Size x Size) of numbers between 0 and Size-1,
randomly distributed so that no row or columns has the same number twice.
Parameters:
Size: | Of random vector to create to spread the blobs.
|
---|
BlobSpreadMethod: | Blob spreading method desired.
|
---|
Returned Value:
int **: Created matrix as vector of vectors.
|
---|
See Also:
User3DMicroBlobsCreateRandomVector
Keywords:
(imgshd3d.c:935)
Prototype:
int *User3DMicroBlobsCreateRandomVector(int Size,
User3DSpreadType BlobSpreadMethod,
IrtBType FirstVec)
Description:
Creates a permutation vector of numbers between 0 and Size-1, with a
desired distributed, in a vector of size Size.
Parameters:
Size: | Of random vector to create to spread the blobs.
|
---|
BlobSpreadMethod: | Blob spreading method desired.
|
---|
FirstVec: | TRUE for first vector, FALSE for second vector.
|
---|
Returned Value:
See Also:
User3DMicroBlobsCreateRandomMatrix
Keywords:
(imgshd3d.c:1176)
Prototype:
IPObjectStruct *User3DMicroBlobsFrom3Images(const char *Image1Name,
const char *Image2Name,
const char *Image3Name,
User3DSpreadType BlobSpreadMethod,
IrtRType Intensity,
const IrtVecType MicroBlobSpacing,
const IrtVecType RandomFactors,
int Resolution,
int Negative,
IrtRType CubeSize,
int MergePts)
Description:
Creates micro blobs for Resolution^2 ellipsoidal blobs that looks like
the 1st image (gray level) from the XZ plane and like the 2nd image from
the YZ plane. The entire constructed goemetry is confined to a world
cube space of [0, CubeSize]^3.
Parameters:
Image1Name: | Name of 1st image to load.
|
---|
Image2Name: | Name of 2nd image to load.
|
---|
Image3Name: | Name of 3rd image to load. Optional (Can be NULL).
|
---|
BlobSpreadMethod: | Method of spreading the blobs.
|
---|
Intensity: | A scale affect on the blobs' scale.
|
---|
MicroBlobSpacing: | Spacing to use in the micro blob, in world space
coordinates.
|
---|
RandomFactors: | aximal allowed randomization in XYZ, in world space
coordinates.
|
---|
Resolution: | Resolution of created objects (Resolution^2 ellipsoidal
blobs are created).
|
---|
Negative: | Default (FALSE) is white blobs over dark background. If
TRUE, assume dark blobs over white background.
|
---|
CubeSize: | Size of output.
|
---|
MergePts: | TRUE to merge all points to one list, FALSE each of the
Resolution^2 blobs will hold its own point list.
|
---|
Returned Value:
IPObjectStruct *: Resolution^2 pointlists of micro blobs of Resolution^2
spherical blobs.
|
---|
See Also:
User3DMicroBlobsTiling
Keywords:
(imgshd3d.c:1432)
Prototype:
IPPolygonStruct *User3DMicroBlobsTiling(IrtRType XZIntensity,
IrtRType YZIntensity,
IrtRType XYIntensity,
const IrtVecType MicroBlobSpacing,
const IrtVecType RandomFactors)
Description:
Tile a given blob in the shape of an ellipsoid bounded by [-1, 1]^3, by
micro blobs with XYZ spacing as prescribed by ??Intensity/MicroBlobSpacing.
Parameters:
XZIntensity: | Intensity (0 to 1) of blob when viewed from XZ dir.
Can be invalidated and ignored if negative.
|
---|
YZIntensity: | Intensity (0 to 1) of blob when viewed from YZ dir.
Can be invalidated and ignored if negative.
|
---|
XYIntensity: | Intensity (0 to 1) of blob when viewed from XY dir.
Can be invalidated and ignored if negative.
|
---|
MicroBlobSpacing: | XYZ spacing between micro blobs.
|
---|
RandomFactors: | Maximal randomization factors to use on micro blobs.
|
---|
Returned Value:
IPPolygonStruct *: A pointlist of centers of the tiling micro blobs.
|
---|
See Also:
User3DMicroBlobsFrom2Images
User3DMicroBlobsTiling2
Keywords:
(imgshd3d.c:1557)
Prototype:
IPPolygonStruct *User3DMicroBlobsTiling2(IrtRType XZIntensity,
IrtRType YZIntensity,
IrtRType XYIntensity,
const IrtVecType MicroBlobSpacing,
const IrtVecType RandomFactors)
Description:
Tile a given blob in the shape of a randomized cubed in [-1, 1]^3, by
micro blobs with XYZ spacing as prescribed by ??Intensity/MicroBlobSpacing.
Parameters:
XZIntensity: | Intensity (0 to 1) of blob when viewed from XZ dir.
Can be invalidated and ignored if negative.
|
---|
YZIntensity: | Intensity (0 to 1) of blob when viewed from YZ dir.
Can be invalidated and ignored if negative.
|
---|
XYIntensity: | Intensity (0 to 1) of blob when viewed from XY dir.
Can be invalidated and ignored if negative.
|
---|
MicroBlobSpacing: | XYZ spacing between micro blobs.
|
---|
RandomFactors: | Maximal randomization factors to use on micro blobs.
|
---|
Returned Value:
IPPolygonStruct *: A pointlist of centers of the tiling micro blobs.
|
---|
See Also:
User3DMicroBlobsFrom2Images
User3DMicroBlobsTiling
Keywords:
(am3axis_frag_split.c:85)
Prototype:
void UserAMFiber3AxisFreeFragments(UserAMFiber3AxisFragStruct *Fragments)
Description:
Frees a fragments struct.
Parameters:
Fragments: | truct to free.
|
---|
Returned Value:
See Also:
Keywords:
(am3axis_frag_split.c:323)
Prototype:
void UserAMFiber3AxisFreeTValList(UserAMFiber3AxisTValListStruct *List)
Description:
Free a list of t values.
Parameters:
Returned Value:
See Also:
Keywords:
(am3axis_frag_split.c:287)
Prototype:
UserAMFiber3AxisTValListStruct *UserAMFiber3AxisGetBBoxMaxTVals(
const CagdCrvStruct *Crv,
IrtRType Size)
Description:
Get a List of t (paramteric) values that split a curve to small
sub-curves (smaller than size).
Parameters:
Crv: | the curve.
|
---|
Size: | the maximal dimension size for a bounding box.
|
---|
Returned Value:
UserAMFiber3AxisTValListStruct *: A list of the requested t values.
|
---|
See Also:
Keywords:
(am3axis_frag_split.c:443)
Prototype:
void UserAMFiber3AxisGetCrvsFromTValArray(const CagdCrvStruct *Crv,
CagdCrvStruct **CrvArray,
IrtRType *TVals,
int First,
int Last)
Description:
Get an array of subcurves, for a given array of t values to split at.
Parameters:
Crv: | The original curve.
|
---|
CrvArray: | The array of sub curves.
|
---|
TVals: | The array of t values.
|
---|
First: | First location of arrays to handle (rest of the input ignored).
|
---|
Last: | Last location of arrays to handle (rest of the input ignored).
|
---|
Returned Value:
See Also:
Keywords:
(am3axis_frag_split.c:488)
Prototype:
CagdCrvStruct *UserAMFiber3AxisGetFragmentCrvs(
const UserAMFiber3AxisFragStruct *Fragments)
Description:
Get an list of subcurves, for a given fragment struct.
Parameters:
Fragments: | The fragment struct.
|
---|
Returned Value:
CagdCrvStruct *: List of subcurves.
|
---|
See Also:
Keywords:
(am3axis_frag_split.c:184)
Prototype:
UserAMFiber3AxisTValListStruct *UserAMFiber3AxisGetKnotsTVals(
const CagdCrvStruct *Crv)
Description:
Get a List of t (paramteric) values at the curve knots.
Parameters:
Returned Value:
UserAMFiber3AxisTValListStruct *: A list of the requested t values.
|
---|
See Also:
Keywords:
(am3axis_frag_split.c:109)
Prototype:
UserAMFiber3AxisTValListStruct *UserAMFiber3AxisGetMonotoneTVals(
const CagdCrvStruct *Crv)
Description:
Get a List of t (paramteric) values that split a curve to monotone
sub-curves.
Parameters:
Returned Value:
UserAMFiber3AxisTValListStruct *: A list of the requested t values.
|
---|
See Also:
Keywords:
(am3axis_frag_split.c:40)
Prototype:
UserAMFiber3AxisFragStruct *UserAMFiber3AxisGetTValFragments(
const CagdCrvStruct *Crv,
const UserAMFiber3AxisTValListStruct *List)
Description:
Returns an array specifying curve fragments.
Parameters:
Crv: | The curve being split.
|
---|
List: | A list of t values to split at.
|
---|
Returned Value:
UserAMFiber3AxisFragStruct *: The struct containing the fragment values.
|
---|
See Also:
Keywords:
(am3axis_frag_split.c:353)
Prototype:
UserAMFiber3AxisTValListStruct *UserAMFiber3AxisMergeTValLists(
UserAMFiber3AxisTValListStruct *List1,
UserAMFiber3AxisTValListStruct *List2)
Description:
Merge two given list of t values (resutls in an ordered list).
Parameters:
List1: | List 1.
|
---|
List2: | List 2.
|
---|
Returned Value:
UserAMFiber3AxisTValListStruct *: An ordered and merged list.
|
---|
See Also:
Keywords:
(am3axis_order_crvs.c:946)
Prototype:
CagdCrvStruct *UserAMFiber3AxisOrderCrvs(
const UserAMFiber3AxisCrvOrderStruct *Crvs,
int Num,
IrtRType Radius,
IrtRType XYRadius,
IrtRType Angle,
IrtRType ZOffs,
IrtRType Accuracy)
Description:
Order (for printing) and subdivide a list of curves.
Parameters:
Crvs: | The curves (struct array).
|
---|
Num: | The number of curves.
|
---|
Radius: | The printing radius - diameter of the printed extruded
material.
|
---|
XYRadius: | Bottom width of half the extruder bounding frustum.
|
---|
Angle: | Angle of the extruder bounding frustum.
|
---|
ZOffs: | Z offset of the extruder bounding frustum.
|
---|
Accuracy: | ubdivision accuracy of the computation (fragment size).
|
---|
Returned Value:
CagdCrvStruct *: An ordered set of curves (probably subdivided).
|
---|
See Also:
Keywords:
(am3axis_order_crvs.c:1129)
Prototype:
void UserAMFiber3AxisSaveCrvsAsSweeps(const CagdCrvStruct *Crvs,
const char *FileName)
Description:
Save a list of curves as tube (sweep) models.
Parameters:
Crvs: | The curves to convert and save.
|
---|
FileName: | File to save the curves in.
|
---|
Returned Value:
See Also:
Keywords:
(am3axis_sbtrct_crvs.c:235)
Prototype:
CagdCrvStruct *UserAMFiber3AxisSubCrvs(const CagdCrvStruct *SubCrvs,
const CagdCrvStruct *FromCrvs,
IrtRType Dist,
IrtRType Accuracy,
IrtBType Invert)
Description:
Subtract one group of curves from another.
Parameters:
SubCrvs: | The curves to subtract.
|
---|
FromCrvs: | The curves to subtract from.
|
---|
Dist: | The minimal distance of the subtraction, between fiber and
ambient fibers.
|
---|
Accuracy: | The subdivision size (smaller = more accurate) - maximal
bbox dimension of a divided segment.
|
---|
Invert: | Return only the subtracted part. Mostly for debugging.
|
---|
Returned Value:
CagdCrvStruct *: The result curves.
|
---|
See Also:
Keywords:
(belts.c:61)
Prototype:
IPObjectStruct *UserBeltCreate(IPVertexStruct *Circs,
IrtRType BeltThickness,
IrtRType BoundingArcs,
int ReturnCrvs,
int *Intersects,
const char **Error)
Description:
Builds a belt-curve formed out of a pair of sequences of lines/arcs
around the given set of circles (pulleys), in order.
Parameters:
Circs: | A sequence of circles (pulleys), each as (x, y, r).
If r is positive is it a CW pulley, otherwise CCW.
|
---|
BeltThickness: | The thickness of the constructed belt.
|
---|
BoundingArcs: | If non zero, bounding arcs are computed for each linear
segment in belt, for each of the two sides of the belt.
|
---|
ReturnCrvs: | TRUE to simply return two closed curves with the left
and right sides of the belt. FALSE to return a list
with the individual arcs and lines and their attributes.
|
---|
Intersects: | TRUE if left and right sides intersects.
|
---|
Error: | If not set to NULL, holds an error description.
|
---|
Returned Value:
IPObjectStruct *: Two lists of lines/arcs representing the two sides
the belt around the given circles (pulleys). If
BoundingArcs is positive, two additional lists of arcs,
each bounding a line segment in the belt, are build.
The bounding arc is expanding the belt's domain with
at most distance BoundingArc, from the linear segment.
|
---|
Keywords:
(crv_arng.c:705)
Prototype:
int UserCABreakLiNCrvsAtAngularDev(UserCrvArngmntStruct *CA,
IrtRType AngularDeviation)
Description:
Break given linear curves at any C1 discont. that is showing an angular *
deviation larger than AngularDeviation. *
Parameters:
CA: | The curves arrangement to process.
|
---|
AngularDeviation: | aximal angular deviation to allow, in degrees.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crv_arng.c:552)
Prototype:
int UserCAMergeCrvsAtAngularDev(UserCrvArngmntStruct *CA,
IrtRType AngularDeviation,
IrtRType PtPtEps)
Description:
Merge given curves that share an end point if their angular deviation is
smaller than AngularDeviation.
Parameters:
CA: | The curves arrangement to process.
|
---|
AngularDeviation: | aximal angular deviation to allow, in degrees.
|
---|
PtPtEps: | Epsilon when two points are considered the same.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(srf_cntr.c:1184)
Prototype:
TrimSrfStruct *UserClipSrfAtPlane(const CagdSrfStruct *Srf,
const IrtPlnType Pln)
Description:
Clip the given surface, Srf, against a plane. Return a list of trimmed
surfaces representing the parts of Srf above the plane.
Parameters:
Srf: | To clip against the plane.
|
---|
Pln: | The plane with which to clip Srf.
|
---|
Returned Value:
TrimSrfStruct *: A list of trimmed surfaces resulting from the clipping
operation. Can be empty.
|
---|
Keywords:
(srf_cntr.c:446)
Prototype:
IPPolygonStruct *UserCntrEvalToE3(const CagdSrfStruct *Srf,
IPPolygonStruct *Cntrs,
UserCntrIsValidCntrPtFuncType ValidCntrPtFunc)
Description:
Evaluate contours Cntrs, in place, into Euclidean space. Input UV
contours are mapped through Srf to yield 3-space points. In the process
all contour points are being validated through ValidCntrPtFunc, if not
NULL.
Parameters:
Srf: | Surface to evaluate contours on.
|
---|
Cntrs: | Contours to evaluate, in place.
The input contours should hold UV coordinates in the YZ
coefficients of the points.
|
---|
ValidCntrPtFunc: | ach point along the contours is validated through this
function if !NULL. In valid points break the contour
and are purged away.
|
---|
Returned Value:
IPPolygonStruct *: Mapped and validated contour in 3-space.
|
---|
See Also:
UserCntrSrfWithPlane
Keywords:
(srf_cntr.c:249)
Prototype:
IPPolygonStruct *UserCntrSrfWithPlane(const CagdSrfStruct *Srf,
const IrtPlnType Plane,
IrtRType SubdivTol,
int UseSSI,
int Euclidean)
Description:
Computes the intersection of a freeform surface and a plane.
If Srf is a scalar surface then it is promoted first into a
3D Euclidean surface with UV as YZ coordinates (and X has scalar field).
Parameters:
Srf: | To approximate its intersection with the given plane.
|
---|
Plane: | To intersect with the given surface.
|
---|
SubdivTol: | ontrol of subdivision tolerance if UseSSI (see
MvarSrfSrfInter function).
Control of polygonal approximation of surface (See
IritSurface2Polygons function) if !UseSSI.
|
---|
UseSSI: | TRUE to use the multivariate SSI abilities, FALSE to compute
a polygonal approximation intersection.
|
---|
Euclidean: | if FALSE and UseSSI is TRUE, returns the contours in the UV
parameter space of Srf.
Otherwise, contours are returned in Euclidean space.
|
---|
Returned Value:
IPPolygonStruct *: A list of polylines approximating the contour.
|
---|
See Also:
UserCntrEvalToE3
MdlInterSrfByPlane
Keywords:
contouring
(usrcnvrt.c:133)
Prototype:
IPPolygonStruct *UserCnvrtCagdPolyline2IritPolyline(const CagdPolylineStruct
*Poly)
Description:
Converts a polyline into an Irit polyline.
Parameters:
Poly: | Input polyline to convert into am Irit polyline.
|
---|
Returned Value:
IPPolygonStruct *: Converted polyline.
|
---|
See Also:
CagdCnvrtLinBspCrv2Polyline
CagdCnvrtPolyline2LinBspCrv
CagdCnvrtPolyline2PtList
UserCnvrtCagdPolylines2IritPolylines
Keywords:
(usrcnvrt.c:169)
Prototype:
IPPolygonStruct *UserCnvrtCagdPolylines2IritPolylines(const CagdPolylineStruct
*Polys)
Description:
Converts a list of polylines into an Irit polylines.
Parameters:
Polys: | Input polylines to convert into Irit polylines.
|
---|
Returned Value:
IPPolygonStruct *: Converted polylines.
|
---|
See Also:
CagdCnvrtLinBspCrv2Polyline
CagdCnvrtPolyline2LinBspCrv
CagdCnvrtPolyline2PtList
UserCnvrtCagdPolyline2IritPolyline
Keywords:
(usrcnvrt.c:201)
Prototype:
CagdPolylineStruct *UserCnvrtIritPolyline2CagdPolyline(const IPPolygonStruct
*Plln)
Description:
Converts an IRIT polyline to a cagd polyline.
Parameters:
Plln: | Input IRIT polyline to convert into a cagd polyline.
|
---|
Returned Value:
CagdPolylineStruct *: Converted polyline.
|
---|
See Also:
CagdCnvrtLinBspCrv2Polyline
CagdCnvrtPolyline2LinBspCrv
CagdCnvrtPtList2Polyline
UserCnvrtLinBspCrvs2IritPolyline
Keywords:
(usrcnvrt.c:237)
Prototype:
IPPolygonStruct *UserCnvrtLinBspCrv2IritPolyline(const CagdCrvStruct *Crv,
int FilterIdentical)
Description:
Converts a cagd linear curve into an Irit polyline.
Parameters:
Crv: | Input linear curve to convert into an Irit polyline.
|
---|
FilterIdentical: | TRUE to filter almost identical adjacent vertices.
|
---|
Returned Value:
IPPolygonStruct *: Converted polyline.
|
---|
See Also:
CagdCnvrtLinBspCrv2Polyline
CagdCnvrtPolyline2LinBspCrv
CagdCnvrtPolyline2PtList
UserCnvrtCagdPolyline2IritPolyline
UserCnvrtLinBspCrvs2IritPolylines
UserCnvrtIritPolyline2CagdPolyline
Keywords:
(usrcnvrt.c:269)
Prototype:
IPPolygonStruct *UserCnvrtLinBspCrvs2IritPolylines(const CagdCrvStruct *Crvs,
int FilterIdentical)
Description:
Converts a list of cagd linear curves into Irit polylines.
Parameters:
Crvs: | Input linear curves to convert into Irit polylines.
|
---|
FilterIdentical: | TRUE to filter almost identical adjacent vertices.
|
---|
Returned Value:
IPPolygonStruct *: Converted polylines.
|
---|
See Also:
CagdCnvrtLinBspCrv2Polyline
CagdCnvrtPolyline2LinBspCrv
CagdCnvrtPolyline2PtList
UserCnvrtCagdPolyline2IritPolyline
UserCnvrtLinBspCrv2IritPolyline
Keywords:
(usrcnvrt.c:302)
Prototype:
void UserCnvrtObjApproxLowOrderBzr(IPObjectStruct *Obj, int ApproxLowOrder)
Description:
Lower order approximate the given freeform (hierarchy of) object(s)
using the specified Beziers of order ApproxLowOrder, in place.
As a side effect all B-spline entities are convertd to piecewise Bezier
entities (that are lower order fitted).
This approximating ensures the interpolation of (end condition) end
points.
Parameters:
Obj: | To lower order approximate (curves, surfaces, trivariates).
|
---|
ApproxLowOrder: | rder to use - either 3 or 4 for quadratic or cubic.
|
---|
Returned Value:
Keywords:
(srf_cntr.c:1289)
Prototype:
CagdSrfStruct *UserConservativeClipSrfByPlane(const CagdSrfStruct *Srf,
const IrtPlnType Pln)
Description:
Given a surface (Srf) and a plane (Pln), clip as much from Srf below Pln
as possible, while keeping the result a tensor-product surface.
That is, clip Srf against Pln (resulting in trimmed geometry), and return
the minimal tensor-product surface containing the clipped geometry.
Parameters:
Srf: | To clip against the plane.
|
---|
Pln: | The plane with which to clip Srf.
|
---|
Returned Value:
CagdSrfStruct *: A tensor-product surface which results from the
"conservative" clipping operation.
|
---|
See Also:
UserClipSrfAtPlane
Keywords:
(visible.c:614)
Prototype:
IPObjectStruct *UserCrvAngleMap(const CagdCrvStruct *Crv,
CagdRType SubdivTol,
CagdRType Angle)
Description:
Computes the parallel/orthogonality/angular map of the given planar
closed curve.
The orthogonality map is the set of pairs of points of Crv that have
an orthogonal normal and is a 2D map of size [D x D] where D is the domain
of Crv.
Similarly the parallel map is the set of pairs of points of Crv that
have the same normal direction, and the angular map identifies pairs of
points with a prescribed fixed angle between their normals.
Parameters:
Crv: | Planar closed curve to compute its para/ortho/angular map.
|
---|
SubdivTol: | f computation. If negative the function whose zero set is
the orthogonal map, is returned.
|
---|
Angle: | 0 for parallel maps, 90 for orthogonal maps, or general
for general angles.
|
---|
Returned Value:
IPObjectStruct *: Polyline(s) of (r, t) points such that the normals
at C(r) and C(t) are orthogonal.
|
---|
See Also:
UserCrvOMDiagExtreme
UserCrvViewMap
UserCrvVisibleRegions
Keywords:
(crv_arng.c:264)
Prototype:
UserCrvArngmntStruct *UserCrvArngmnt(UserCAOpType Operation,
const UserCrvArngmntStruct *CA,
const void *Params[])
Description:
Main entry points of CA. gets the desired operation to perform, the CA
to operate on (or NULL if new one) and parameters that depends on the
specific desired operation:
USER_CA_OPER_CREATE - Creates a new CA
Params[0] = List of curves/polylines/trimmed surfaces to extract the
curves/linear curves/trimming curves for the arrangement.
Params[1] = Tolerance for considering end points equal.
Params[2] = Planarity tolerance to consider arrangement planar.
Params[3] = TRUE to project all curves to be on computed plane.
Params[4] = Mask for input type to consider:
0x01 to handle polylines.
0x02 to handle curves.
0x04 to handle trimming curves in trimmed surfaces.
USER_CA_OPER_COPY - Creates a new CA
None.
USER_CA_OPER_FILTER_DUP - Creates a new CA
Params[0] = Epsilon to consider the curves the same.
Params[1] = TRUE to update end points to be the same.
USER_CA_OPER_FILTER_TAN - Creates a new CA
Params[0] = Epsilon angle in degrees to consider two curves with
the same tangent.
USER_CA_OPER_SPLIT_CRV - Creates a new CA
Params[0] = Mask for splitting type to consider:
USER_CA_SPLIT_INFLECTION_PTS to split at inflection pts.
USER_CA_SPLIT_MAX_CRVTR_PTS to split at max curvatures.
USER_CA_SPLIT_C1DISCONT_PTS to split at parametric C1
discontinuities, according to the knot sequence.
USER_CA_SPLIT_REAL_C1DISCONT_PTS to split at actual C1
disconts, examined in Euclidean space.
Params[1] = Tolerance of splitting computation.
USER_CA_OPER_BREAK_LIN - Creates a new CA
Params[0] = Angular deviation (in degrees) to split linear curves at.
USER_CA_OPER_BREAK_INTER - Creates a new CA
Params[0] = Intersection computation tolerance.
USER_CA_OPER_BREAK_NEAR_PTS - Creates a new CA
Params[0] = Number of points to split curves at.
Params[1] = A list object of pts to examine and split if near them.
Params[2] = Tolerance to consider a point near/on a curve.
USER_CA_OPER_UNION_CRV - Creates a new CA
Params[0] = Angular deviation (in degrees) to merge C1 discont
curves at.
USER_CA_OPER_LSTSQR_CRV - Creates a new CA
Params[0] = Fitting Parameter to fit smooth quadratic C1 curves to
linear curves. Higher order curves are not affected.
If Params[0] positive, the fitted curve size is set
to InputCrvSize * FitC1Crv / 100 (i.e. Params[0] serves
as percentage of input size.
If Params[0] negative, the Fitted curve size is
simply set to ABS(Params[0]).
USER_CA_OPER_EVAL_CA - Operates on input CA in place
Params[0] = TRUE to ignore hanging curves that join other curves at
only one of their end points.
USER_CA_OPER_CLASSIFY - Operates on input CA in place.
No parameters.
USER_CA_OPER_REPORT - Operates on input CA in place
Params[0] = A mask of desired report:
0x01 to dump info on crvs. 0x02 to also dump the crvs.
0x04 to report end pts in arrangement if evaluated.
0x08 to report regions in arrangement if evaluated.
USER_CA_OPER_OUTPUT - Operates on input CA in place
Params[0] = Style of expected output:
1 for individual crv segs in each region (loop etc.),
2 for merged curves so every region is one curve,
3 for topology as an ordered list of curve segments and
each region is a list of indices into the first list.
A negative -i index means index i but a reversed crv.
101, 102, 103: same as 1,2,3 but pt is evaluated at 1/13
of curve parametric domain to identify orientation.
Params[1] = Tolerance of topology reconstruction (in case 3 only).
Params[2] = Zoffset in Z for the i'th region, by amount i*ZOffset.
USER_CA_OPER_FREE - Operates on input CA in place
None.
Parameters:
Operation: | Create, BreakCrv, Report, Free, etc. (See UserCAOpType).
|
---|
CA: | To operate on its copy or NULL if a new CA.
|
---|
Params: | An array of params depending on Operation.
|
---|
Returned Value:
UserCrvArngmntStruct *: Constructed or updated CA.
|
---|
See Also:
Keywords:
(crv_arng.c:1991)
Prototype:
int UserCrvArngmntClassifyConnectedRegions(UserCrvArngmntStruct *CA)
Description:
Create regions (loops, etc.) from the given arrangement and classify
them.
Parameters:
CA: | Curves' arrangement to process.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crv_arng.c:1412)
Prototype:
UserCrvArngmntStruct *UserCrvArngmntCopy(const UserCrvArngmntStruct *CA)
Description:
Copy all the data structure used in the curve arrangement.
Parameters:
CA: | The curve arrangement structure to copy.
|
---|
Returned Value:
UserCrvArngmntStruct *: NULL if error or new copy of CA.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crv_arng.c:430)
Prototype:
UserCrvArngmntStruct *UserCrvArngmntCreate(const IPObjectStruct *PCrvs,
CagdRType EndPtEndPtTol,
CagdRType PlanarityTol,
int ProjectOnPlane,
int InputMaskType)
Description:
Constructs a new curves' arrangement data structure.
Parameters:
PCrvs: | Input to derive its planar arrangement. Can be
curves, polylines, or trimming curves in trimmed
surfaces.
|
---|
EndPtEndPtTol: | Tolerance to consider two (end) points the same.
|
---|
PlanarityTol: | Tolerance to accept all curves as planar.
|
---|
ProjectOnPlane: | TRUE to project off-plane curves onto the plane.
|
---|
InputMaskType: | Bit mask controlling the type of entities to process:
0x01 - process polylines in the input.
0x02 - process curves in the input.
0x04 - process trimming curves in trimmed surfaces
in the input.
|
---|
Returned Value:
UserCrvArngmntStruct *: A curves' arrangement structure, or NULL if err.
|
---|
See Also:
Keywords:
(crv_arng.c:803)
Prototype:
int UserCrvArngmntFilterDups(UserCrvArngmntStruct *CA,
CagdBType UpdateEndPts,
CagdRType EndPtEndPtTol,
CagdRType Eps)
Description:
Filters out curves that are duplicated, leaving only one instance.
Also seeks partial overlaps and filter such cases as well.
Parameters:
CA: | The curves arrangement to process.
|
---|
UpdateEndPts: | TRUE to update end points at purged segments to the
precise position of the retained segment.
|
---|
EndPtEndPtTol: | Tolerance to consider two (end) points the same.
|
---|
Eps: | To consider curves same and Pt-Crv distances to consider same.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crv_arng.c:945)
Prototype:
int UserCrvArngmntFilterTans(UserCrvArngmntStruct *CA, CagdRType FilterTans)
Description:
Scans all shared end points and modify end curves so no two curves will
be tangent at the end points.
Parameters:
CA: | The curve arrangement structure to modify tangencies.
|
---|
FilterTans: | olerance in degrees of two angles to be the same (tangent).
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crv_arng.c:1447)
Prototype:
int UserCrvArngmntFree(UserCrvArngmntStruct *CA)
Description:
Delete all the data structure used in the curve arrangement.
Parameters:
CA: | The curve arrangement structure to free.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crv_arng.c:3251)
Prototype:
CagdCrvStruct *UserCrvArngmntGetCurves(UserCrvArngmntStruct *CA, int XYCurves)
Description:
Fetches the curves of the arrangement.
Parameters:
CA: | Curves' arrangement to process.
|
---|
XYCurves: | TRUE to return curves in XY plane, FASLE to recover the
original orientation.
|
---|
Returned Value:
CagdCrvStruct *: Fetched curves.
|
---|
See Also:
Keywords:
(crv_arng.c:3108)
Prototype:
int UserCrvArngmntIsContained(const UserCrvArngmntStruct *CA,
const CagdCrvStruct *InnerShape,
const CagdCrvStruct *OuterLoop)
Description:
Test if OuterLoop contains the given InnerShape. Both inputs should be
merged regions in CA.
Parameters:
CA: | Curves' arrangement to process.
|
---|
InnerShape: | A shape to test if contained in OuterLoop.
|
---|
OuterLoop: | A closed loop region to test if contains InnerShape.
|
---|
Returned Value:
int: TRUE if OuterLoop contains InnerShape, FALSE otherwise.
|
---|
See Also:
SymbCrvPointInclusion
Keywords:
(crv_arng.c:3142)
Prototype:
int UserCrvArngmntIsContained2(const UserCrvArngmntStruct *CA,
const CagdPType Pt,
const CagdCrvStruct *Loop)
Description:
Test if Loop contains the given Point Pt. Input should be of merged
region in CA.
Parameters:
CA: | Curves' arrangement to process.
|
---|
Pt: | A Point to test for inclusion in Loop.
|
---|
Loop: | A closed loop region to test if contains Pt.
|
---|
Returned Value:
int: TRUE if Loop contains Pt, FALSE otherwise.
|
---|
See Also:
SymbCrvPointInclusion
Keywords:
(crv_arng.c:1335)
Prototype:
int UserCrvArngmntLinearCrvsFitC1(UserCrvArngmntStruct *CA, int FitSize)
Description:
Approximate linear curves using quadratic C1 curves, in place.
Other curves or linear curves with size smaller that (negative) FitSize
are transferred to the output as is.
Parameters:
CA: | The curves arrangement to process.
|
---|
FitSize: | If FitC1Crv positive, the Fitted curve size is set to
InputCrvSize * FitC1Crv / 100 (i.e. FitSize serves as
percetange of input size).
If FitSize negative, the Fitted curve size is simply set
to ABS(FitC1Crv).
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crv_arng.c:3745)
Prototype:
int UserCrvArngmntOutput(const UserCrvArngmntStruct *CA,
int OutputStyle,
CagdRType Tolerance,
CagdRType ZOffset)
Description:
Emit the result of the curve's arrangement computations.
Output is placed on the Output slot of CA.
Parameters:
CA: | Curves' arrangement to output.
Output slot of CA will be updated with result.
|
---|
OutputStyle: | 1 for individual curve segments in each region (loop etc.),
2 for merged curves so every region is one curve,
3 for topology as an ordered list of curve segments and
each region is a list of indices into the first list.
A negative -i index means index i but a reversed curve.
101, 102, 103 - same as 1,2,3 but a pt is evaluated at
1/13 of curve parametric domain to identify orientation.
|
---|
Tolerance: | Tolerance of intersection locations' computation.
|
---|
ZOffset: | if positive, offset the n'th region in Z by n*ZOffset.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
Keywords:
(crv_arng.c:1782)
Prototype:
int UserCrvArngmntPrepEval(UserCrvArngmntStruct *CA)
Description:
Prepare the CA for full evaluation - build the Pts and Crv vectors.
Parameters:
CA: | Curves' arrangement to process.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crv_arng.c:1895)
Prototype:
int UserCrvArngmntProcessEndPts(UserCrvArngmntStruct *CA)
Description:
Detect, up to EndPtTol, end points of curves that can be considered the
same and merge these points.
Parameters:
CA: | Curves' arrangement to process.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crv_arng.c:1608)
Prototype:
int UserCrvArngmntProcessIntersections(UserCrvArngmntStruct *CA,
CagdRType Tolerance)
Description:
Computes all intersections in the given list of curves in XY plane and
split intersecting curves at the intersection locations.
Parameters:
CA: | The curves arrangement to process.
|
---|
Tolerance: | Tolerance of intersection locations' computation.
|
---|
Returned Value:
int: TRUE if intersections were detected, FALSE if none.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crv_arng.c:1671)
Prototype:
int UserCrvArngmntProcessSpecialPts(UserCrvArngmntStruct *CA,
CagdRType Tolerance,
UserCASplitType CrvSplit)
Description:
Splits all input curves at special locations such as C1 discontinuities
and inflections points, in place.
Parameters:
CA: | The curves arrangement to process.
|
---|
Tolerance: | Tolerance of intersection locations' computation.
|
---|
CrvSplit: | A mask setting the type pf points to split at.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crv_arng.c:3170)
Prototype:
static IPObjectStruct *UserCrvArngmntRegion2Curves(const UserCrvArngmntStruct
*CA,
UserCARefCrvStruct
*CARefCrv,
int Merge)
Description:
Convert one internal region as lists of curves, into (a merged) Bspline
curve(s).
Parameters:
CA: | Curves' arrangement to process.
|
---|
CARefCrv: | The regions as a list of references to curves.
|
---|
Merge: | If TRUE, merge all curves in a region into one.
|
---|
Returned Value:
IPObjectStruct *: A (list of) curve(s), or NULL if error.
|
---|
See Also:
UserCrvArngmntRegion2Curves
Keywords:
(crv_arng.c:3293)
Prototype:
int UserCrvArngmntRegions2Curves(const UserCrvArngmntStruct *CA,
int Merge,
int XYCurves,
IrtRType ZOffset)
Description:
Convert internal regions as lists of curves, into merged B-spline curves.
Output is placed on the Output slot of CA.
Parameters:
CA: | Curves' arrangement to process.
|
---|
Merge: | If TRUE, merge all curves in a region into one.
|
---|
XYCurves: | TRUE to return regions in XY plane, FASLE to recover the
original orientation.
|
---|
ZOffset: | if positive, offset the n'th region in Z by n*ZOffset.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
Keywords:
(crv_arng.c:3404)
Prototype:
int UserCrvArngmntRegionsTopology(const UserCrvArngmntStruct *CA,
int XYCurves,
IrtRType ZOffset)
Description:
Convert internal regions into full topology as a list of two lists:
1. First list is the list of all curves in the arrangements' output.
2. Second list is a list of entities each of which holds a list of indices
into the first list. Negative indices indicates the curve should be
reversed. Index of first curve is 1.
Output is placed on the Output slot of CA.
Parameters:
CA: | Curves' arrangement to process.
|
---|
XYCurves: | TRUE to return regions in XY plane, FASLE to recover the
original orientation.
|
---|
ZOffset: | if positive, offset the n'th region in Z by n*ZOffset.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
Keywords:
(crv_arng.c:3582)
Prototype:
void UserCrvArngmntReport(const UserCrvArngmntStruct *CA,
int DumpCurves,
int DumpPts,
int DumpRegions,
int DumpXYData)
Description:
Dumps to stdout, the content of the curve arrangement.
Parameters:
CA: | To print to stdout.
|
---|
DumpCurves: | 1 to dump info crvs in the CA. 2 to also dump the crvs.
|
---|
DumpPts: | TRUE to dump the points in the CA.
|
---|
DumpRegions: | TRUE to dump the regions in the CA.
|
---|
DumpXYData: | RUE to dump XY data, FALSE for 3-space data (crvs and pts).
|
---|
Returned Value:
See Also:
Keywords:
(crv_arng.c:1173)
Prototype:
int UserCrvArngmntSplitAtPts(UserCrvArngmntStruct *CA,
const IPObjectStruct *PtsObj,
CagdRType Eps)
Description:
Filters out curves that are duplicated, leaving only one instance.
Also seeks partial overlaps and filter such cases as well.
Parameters:
CA: | The curves arrangement to process.
|
---|
PtsObj: | List of points to examine of on curves and if so split curves
there. if NULL uses all end points in all given curves.
|
---|
Eps: | to consider curves same and Pt-Crv distances to consider same.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(crvtranl.c:52)
Prototype:
IPObjectStruct *UserCrvCrvtrByOneCtlPt(const CagdCrvStruct *Crv,
int CtlPtIdx,
CagdRType Min,
CagdRType Max,
CagdRType SubdivTol,
CagdRType NumerTol,
int Operation)
Description:
Given a parametric curve, Crv, and a control point index CtlPtIdx,
compute the curvature sign field of the curve as function of the Euclidean
locations of control point index CtlPtIdx.
Parameters:
Crv: | To compute its curvature behaviour (convex vs. concave) as a
function of the curve parameter and the Euclidean coordiate
of the CtlPtIdx's control point.
|
---|
CtlPtIdx: | Index of control point to make a parameter for the curvature.
|
---|
Min, Max: | Domain each coordinate of CtlPtIdx point should vary.
|
---|
SubdivTol, NumerTol: | Tolerance for the silhouette solving, if any.
|
---|
Operation: | . Returned is a multivariate of dimension "1 + Dim(Crv)",
where Dim(Crv) is the dimension of curve (E2, E3, etc.).
2. Extract the zero set of 1. using marching cubes.
3. Computes the t's silhouette of the 1. by simultaneously
solving for 1 and its derivative with respect to t.
4. Same as 3 but evaluate the result into Euclidean space.
|
---|
Returned Value:
IPObjectStruct *: Either the multivariate (1 above) or its t's
silhouette (2 above).
|
---|
See Also:
MvarCrvCrvtrByOneCtlPt
SymbCrv2DCurvatureSign
MvarCrvMakeCtlPtParam
Keywords:
curvature
(visible.c:915)
Prototype:
IPObjectStruct *UserCrvOMDiagExtreme(const CagdCrvStruct *Crv,
const IPObjectStruct *OM,
int DiagExtRes)
Description:
Computes the diagonal extremes of the Orthogonality map of curve Crv.
Uses a [DiagExtRes x 1] Z-buffer to extract th diagnoal extremes.
Parameters:
Crv: | Curve for which we computed the orthogonality map and now
seek the diagonal extremes.
|
---|
OM: | The computed othogonality map of Crv.
|
---|
DiagExtRes: | he resolution of the Z-buffer to use to extract the
diagonal extreme.
|
---|
Returned Value:
IPObjectStruct *: A polyline object with two polylines, upper
diagonal extreme followed by lower diagonal extreme.
|
---|
See Also:
UserCrvAngleMap
Keywords:
(visible.c:751)
Prototype:
IPObjectStruct *UserCrvViewMap(const CagdCrvStruct *Crv,
const CagdCrvStruct *ViewCrv,
CagdRType SubTol,
CagdRType NumTol,
CagdBType TrimInvisible)
Description:
Computes the view map of the given planar closed curve, C(t), with
respect to view directions that are prescribed by vector curve
ViewCrv(Theta).
The view map is defined as the zero of M = < N(t), ViewCrv(Theta) >,
where N(t) is the normal field of C(t).
Seeking the visible portions, the problem could be partially addressed
using the following constraints:
< C(t) - C(r), ViewCrv'(Theta) > = 0,
finding all points C(t) behind or in front C(r), for some r, such that
< C(t) - C(r), ViewCrv(Theta) > > 0,
for all matched r values.
Parameters:
Crv: | Planar closed curve to compute its view map.
|
---|
ViewCrv: | Planar viewing direction curve in vector space.
|
---|
SubTol: | Used only if TrimInvisible TRUE to control the subdivision
Tolerance of the solver. If negative, the solution set is
returned as a cloud of points.
|
---|
NumTol: | Of computation. If negative the function M whose zero set is
the view map, is returned.
|
---|
TrimInvisible: | If TRUE, trim the regions that are invisible from V.
|
---|
Returned Value:
IPObjectStruct *: Polyline(s) of (Theta, t) or (Theta, t, r) points
such that normals at C(t) are orthogonal to ViewCrv(Theta),
and C(t) exactly in front of C(r) if (Theta, t, r).
|
---|
See Also:
UserCrvOMDiagExtreme
UserCrvAngleMap
UserCrvVisibleRegions
Keywords:
(visible.c:440)
Prototype:
CagdCrvStruct *UserCrvVisibleRegions(const CagdCrvStruct *CCrv,
const CagdRType *View,
CagdRType Tolerance)
Description:
Computes the regions of planar curve Crv that are visible from a view
point (View[2] == 1) or direction (View[2] == 0) View (x, y, w). Return
is a list of visible curve segments.
Parameters:
CCrv: | Planar curve to compute its visible regions from View.
|
---|
View: | As (x, y, w) where w == 0 for parallel view direction and
w = 1 for a point view.
|
---|
Tolerance: | f computation.
|
---|
Returned Value:
CagdCrvStruct *: List of curve segments of Crv that are visible from
View.
|
---|
See Also:
UserCrvOMDiagExtreme
UserCrvAngleMap
UserCrvViewMap
Keywords:
(crv_bool.c:103)
Prototype:
struct IPObjectStruct *UserCrvs2DBooleans(const CagdCrvStruct *Crvs1,
const CagdCrvStruct *Crvs2,
BoolOperType BoolOper,
int MergeLoops,
int *ResultState,
const CagdRType *Tols,
CagdRType ZOffset)
Description:
Compute the 2D (XY) Booleans of two given sets of closed curves.
Crvs1 and Crvs2 should both hold one (or more) closed loops of curves.
Parameters:
Crvs1, Crvs2: | Two inputs of (one or more) loops to perform 2D Booleans.
|
---|
BoolOper: | The Boolean operation requested, OR, AND, etc.
|
---|
MergeLoops: | TRUE to merge loops into a single curve.
|
---|
ResultState: | Of operation -
0 if everything is computed fine.
-1 if the curves are not intersecting and not contained
in one another.
1 if the curves are not intersecting but 1 is inside 2.
2 if the curves are not intersecting but 2 is inside 1.
|
---|
Tols: | Optional vector of four elements to overwrite the default
tolerances (EndPtEndPtTol, PlanarityTol, ProjectOnPlane,
InputMaskType). See UserCrvArngmntCreate for more.
Can be NULL to employ defaults.
|
---|
ZOffset: | Amount to ZOffset the n curve segment by n*ZOffset.
|
---|
Returned Value:
struct IPObjectStruct *: The result as list of loops, each loop holding
the curve segments of the loop, and each curve tagged
using "CrvSourceID" if from first (0x01) curve(s),
second (0x02) input curve(s) or both (0x03).
|
---|
See Also:
UserCrvArngmntCreate
Keywords:
(ddm_text.c:462)
Prototype:
IPObjectStruct *UserDDMPolysOverPolys(const IPObjectStruct *PlSrf,
const IPObjectStruct *Texture,
IrtRType UDup,
IrtRType VDup,
int LclUV)
Description:
Maps the given DDM texture defined in Texture over mesh surface PlSrf,
duplicating it (UDup x VDup) times over the parametric domain of mesh.
Parameters:
PlSrf: | Polygonal mesh surface to derive a DDM mapping for.
This mesh must have a parametrization as UV coordinates as well
as normals at the vertices of the polygons.
|
---|
Texture: | eometry defining the single tile of the DDM texture.
The geometry is assumed to span [0..1] in both x and y.
|
---|
UDup, VDup: | he U and V duplication factors.
|
---|
LclUV: | TRUE to keep local UV coordinates for each tile, FALSE to
employ the UV coordinates of the surface Srf.
|
---|
Returned Value:
IPObjectStruct *: A set of objects that derive the DDM surface
above Srf.
|
---|
See Also:
UserDDMPolysOverSrf
Keywords:
(ddm_text.c:137)
Prototype:
IPObjectStruct *UserDDMPolysOverSrf(const CagdSrfStruct *Srf,
const IPObjectStruct *Texture,
IrtRType UDup,
IrtRType VDup,
int LclUV,
int Random)
Description:
Maps the given DDM texture defined in Texture over the surface Srf,
duplicating it (UDup x VDup) times over the parametric domain of Srf.
Parameters:
Srf: | Surface to derive a DDM mapping for.
|
---|
Texture: | eometry defining the single tile of the DDM texture.
The geometry is assumed to span [0..1] in both x and y.
|
---|
UDup, VDup: | he U and V duplication factors.
|
---|
LclUV: | TRUE to keep local UV coordinates for each tile, FALSE to
employ the UV coordinates of the surface Srf.
|
---|
Random: | If TRUE, the placement is made at random over the surface.
|
---|
Returned Value:
IPObjectStruct *: A set of objects that derive the DDM surface
above Srf.
|
---|
See Also:
UserDDMPolysOverPolys
Keywords:
(ddm_text.c:92)
Prototype:
IPObjectStruct *UserDDMPolysOverTrimmedSrf(const TrimSrfStruct *TSrf,
const IPObjectStruct *Texture,
IrtRType UDup,
IrtRType VDup,
int LclUV,
int Random)
Description:
Maps the given DDM texture defined in Texture over the trimmed surface
TSrf, duplicating it (UDup x VDup) times over the parametric domain in
non trimmed regions only.
Parameters:
TSrf: | Trimmed surface to derive a DDM mapping for.
|
---|
Texture: | eometry defining the single tile of the DDM texture.
The geometry is assumed to span [0..1] in both x and y.
|
---|
UDup, VDup: | he U and V duplication factors.
|
---|
LclUV: | TRUE to keep local UV coordinates for each tile, FALSE to
employ the UV coordinates of the surface TSrf.
|
---|
Random: | If TRUE, the placement is made at random over the trimmed srf.
|
---|
Returned Value:
IPObjectStruct *: A set of objects that derive the DDM surface
above TSrf.
|
---|
See Also:
UserDDMPolysOverSrf
UserDDMPolysOverPolys
Keywords:
(user_err.c:75)
Prototype:
const char *UserDescribeError(UserFatalErrorType ErrorNum)
Description:
Returns a string describing a the given error. Errors can be raised by
any member of this user library as well as other users. Raised error will
cause an invokation of UserFatalError function which decides how to handle
this error. UserFatalError 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
(dexels.c:2220)
Prototype:
IPObjectStruct *UserDexelColorTriangles(IPPolygonStruct *PolyList)
Description:
Colors the triangles with two colors based on cut and uncut portions.
The two types of triangles are returned as a list of two objects.
Parameters:
PolyList: | The list of triangles to color.
|
---|
Returned Value:
IPObjectStruct *: List of two objects, each having triangles of a color.
|
---|
Keywords:
(dexels.c:458)
Prototype:
void UserDexelDxClearGrid(UserDexelDxGridStruct *DxGrid)
Description:
Clears the given grid, in place.
Parameters:
DxGrid: | The grid to clear, in place.
|
---|
Returned Value:
See Also:
UserDexelDxGridFree
Keywords:
(dexels.c:489)
Prototype:
void UserDexelDxGridCopy(UserDexelDxGridStruct *Dest,
const UserDexelDxGridStruct *Src)
Description:
Creates a copy of the source grid into the destination, in place.
Assumes a single dexel interval at each location of the source grid.
Parameters:
Dest: | The destination grid.
|
---|
Src: | The source.
|
---|
Returned Value:
See Also:
UserDexelGridNew
Keywords:
(dexels.c:425)
Prototype:
void UserDexelDxGridFree(UserDexelDxGridStruct *DxGrid)
Description:
Frees the input grid.
Parameters:
DxGrid: | The grid to free.
|
---|
Returned Value:
See Also:
UserDexelGridNew
UserDexelDxClearGrid
Keywords:
(dexels.c:534)
Prototype:
void UserDexelDxGridSubtract(UserDexelDxGridStruct *GridA,
const UserDexelDxGridStruct *GridB)
Description:
Performs a boolean subtraction of GridB from GridA, in place.
Parameters:
GridA: | The grid to subtract from.
|
---|
GridB: | The grid to subtract.
|
---|
Returned Value:
See Also:
UserDexelDxGridUnion
Keywords:
(dexels.c:633)
Prototype:
void UserDexelDxGridUnion(UserDexelDxGridStruct *GridA,
const UserDexelDxGridStruct *GridB)
Description:
Performs a boolean union of GridB with GridA, in place.
Parameters:
GridA: | The grid to unite and place answer in.
|
---|
GridB: | The grid to unite.
|
---|
Returned Value:
See Also:
UserDexelDxGridSubtract
Keywords:
(dexels.c:750)
Prototype:
UserDexelDxGridStruct *UserDexelGetDexelGridEnvelope0D(
CagdPtStruct *EnvlPts,
CagdPtStruct *EnvlNrmls,
UserDexelDxGridStruct *Stock)
Description:
Updates the given dexel grid with the given points and corresponding
normals, in place.
Parameters:
EnvlPts: | The set of points.
|
---|
EnvlNrmls: | The set of normals.
|
---|
Stock: | The dexel grid to update.
|
---|
Returned Value:
UserDexelDxGridStruct *: Intersection as a dexel grid.
|
---|
See Also:
UserDexelGetDexelGridEnvelope1D
Keywords:
(dexels.c:805)
Prototype:
UserDexelDxGridStruct *UserDexelGetDexelGridEnvelope1D(
CagdPolylineStruct *PlaneEnvelope,
CagdPolylineStruct *EnvlNrmls,
UserDexelDxGridStruct *Stock)
Description:
Computes the intersection of the given polyline with the
given dexel grid, in place.
Parameters:
PlaneEnvelope: | The given polyline.
|
---|
EnvlNrmls: | The corresponding normals to PlaneEnvelope.
|
---|
Stock: | The dexel grid to intersect PlaneEnvelope with.
|
---|
Returned Value:
UserDexelDxGridStruct *: Intersection as a dexel grid.
|
---|
See Also:
UserDexelGetDexelGridEnvelope0D
Keywords:
(dexels.c:377)
Prototype:
UserDexelDxGridStruct *UserDexelGridNew(int GridType,
CagdRType Ori0,
CagdRType End0,
CagdRType Ori1,
CagdRType End1,
int NumDx0,
int NumDx1)
Description:
Allocates an empty dexel grid with given specifications.
Parameters:
GridType: | 0,1,2 for dexels along x,y,z axes.
|
---|
Ori0: | Origin of grid in first direction.
|
---|
End0: | End of grid in first direction.
|
---|
Ori1: | Origin of grid in second direction.
|
---|
End1: | End of grid in second direction.
|
---|
NumDx0: | Number of dexels in first direction.
|
---|
NumDx1: | Number of dexels in second direction.
|
---|
Returned Value:
UserDexelDxGridStruct *: Newly allocated grid.
|
---|
See Also:
UserDexelDxGridFree
Keywords:
(dexels.c:966)
Prototype:
void UserDexelInitStock(UserDexelDxGridStruct *DxGrid,
CagdRType Top,
CagdRType Btm)
Description:
Initializes the given dexel grid as a rectangular block with given
top and bottom values, in place.
Parameters:
DxGrid: | The grid to initialize, in place.
|
---|
Top: | The top height value.
|
---|
Btm: | The bottom height value.
|
---|
Returned Value:
See Also:
UserDexelInitStockSrf
UserDexelInitStockSrf2
Keywords:
(dexels.c:1158)
Prototype:
void UserDexelInitStockSrf(UserDexelDxGridStruct *DxGrid,
const CagdSrfStruct *Srf)
Description:
Initializes the given dexel grid in the shape of the given closed
surface.
Parameters:
DxGrid: | The grid to initialize, in place.
|
---|
Srf: | The closed surface.
|
---|
Returned Value:
See Also:
UserDexelInitStockSrf2
UserDexelInitStock
Keywords:
(dexels.c:1080)
Prototype:
void UserDexelInitStockSrf2(UserDexelDxGridStruct *DxGrid,
CagdSrfStruct *SrfList,
CagdRType BtmLevel)
Description:
Initializes the given dexel grid in the shape of the given surfaces
which are not closed and a bottom height value.
Parameters:
DxGrid: | The grid to initialize, in place.
|
---|
SrfList: | The list of surfaces which are not closed.
|
---|
BtmLevel: | he bottom height value.
|
---|
Returned Value:
See Also:
UserDexelInitStockSrf
UserDexelInitStock
Keywords:
(dexels.c:1311)
Prototype:
UserDexelDxGridStruct *UserDexelReadDexelGridFromFile(char *FileName)
Description:
Reads a dexel grid from a file on the disk.
Parameters:
FileName: | The file name on the disk to read from.
|
---|
Returned Value:
UserDexelDxGridStruct *: The grid read from the file.
|
---|
See Also:
UserDexelWriteDexelGridToFile
Keywords:
(dexels.c:2264)
Prototype:
IPPolygonStruct *UserDexelTriangulateDxGrid(UserDexelDxGridStruct *DxGrid)
Description:
Fits triangles over the dexel grid.
Parameters:
Returned Value:
IPPolygonStruct *: List of triangles.
|
---|
See Also:
Keywords:
(dexels.c:1245)
Prototype:
void UserDexelWriteDexelGridToFile(char *FileName,
UserDexelDxGridStruct *DxGrid)
Description:
Writes the given dexel grid to a file on the disk.
Parameters:
FileName: | The file name on the disk.
|
---|
DxGrid: | The grid to write.
|
---|
Returned Value:
See Also:
UserDexelReadDexelGridFromFile
Keywords:
(srf_cntr.c:1517)
Prototype:
MdlModelStruct *UserDivideMdlAtAllKnots(MdlModelStruct *Model,
IrtPlnType Pln,
int Axis,
const CagdRType *KV,
int MinKV,
int MaxKV,
CagdRType *Param)
Description:
Intersect and subdivide the given model, Mdl, at all locations Mdl
cross a t = KV[i], MinKV <= i < MaxKV, knot plane.
The plane is defined either as (Pln[0], Pln[1], Pln[2], t), or, if the
parameter Pln is NULL, as Axis = t.
Parameters:
Model: | To intersect and subdivide.
|
---|
Pln: | Along which to divide Mdl, or NULL if Mdl need to be
divided at Axis.
|
---|
Axis: | Along which to divideMdl. Ignored if Pln is not NULL.
|
---|
KV: | The knots to divide along.
|
---|
MinKV, MaxKV: | The KV range to consider.
|
---|
Param: | If detected an isoparametric values, set Param to it.
|
---|
Returned Value:
MdlModelStruct *: Subdivided model.
|
---|
See Also:
UserDivideMdlsAtAllMVInteriorKnot
UserDivideOneMdlAtAllMVInteriorKnot
Keywords:
(srf_cntr.c:1647)
Prototype:
MdlModelStruct *UserDivideMdlsAtAllMVInteriorKnot(const MdlModelStruct *Models,
const MvarMVStruct *MV)
Description:
Subdivide the give models, Mdls, embedded inside the domain of
multivariate MV, at all locations Mdls crosses a knot plane in the
domain of MV.
Parameters:
Models: | To subdivide.
|
---|
MV: | The multivariate.
|
---|
Returned Value:
MdlModelStruct *: List of models, subdivided at all interior knots
of MV, as new models.
|
---|
See Also:
UserDivideMdlsAtAllMVInteriorKnot
UserDivideOneMdlAtAllMVInteriorKnot
Keywords:
(srf_cntr.c:1593)
Prototype:
MdlModelStruct *UserDivideOneMdlAtAllMVInteriorKnot(const MdlModelStruct *Model,
const MvarMVStruct *MV)
Description:
Subdivide the given model, Mdl, embedded inside the domain of
multivariate MV, at all locations Mdl crosses a knot plane in the domain
of MV.
Parameters:
Model: | To subdivide.
|
---|
MV: | The multivariate.
|
---|
Returned Value:
MdlModelStruct *: List of models, subdivided at all interior knots of
MV as new models.
|
---|
See Also:
UserDivideMdlsAtAllMVInteriorKnot
UserDivideMdlAtAllKnots
Keywords:
(srf_cntr.c:1106)
Prototype:
TrimSrfStruct *UserDivideOneSrfAtAllMVInteriorKnot(CagdSrfStruct *Srf,
const MvarMVStruct *MV)
Description:
Subdivide the give surface, Srf, embedded inside the domain of
multivariate MV, at all locations Srf crosses a knot plane in the domain
of MV.
Parameters:
Srf: | To subdivide.
|
---|
MV: | The multivariate.
|
---|
Returned Value:
TrimSrfStruct *: List of trimmed surfaces, subdivided at all interior
knots of MV as trimmed surfaces.
|
---|
See Also:
UserDivideSrfAtInterCrvs
UserInterSrfAtAllKnots
UserDivideSrfsAtAllTVInteriorKnot
Keywords:
(srf_cntr.c:964)
Prototype:
TrimSrfStruct *UserDivideOneSrfAtAllTVInteriorKnot(CagdSrfStruct *Srf,
const TrivTVStruct *TV)
Description:
Subdivide the give surface, Srf, embedded inside the domain of
trivariate TV, at all locations Srf crosses a knot plane in the domain
of TV.
Parameters:
Srf: | To subdivide.
|
---|
TV: | The trivariate.
|
---|
Returned Value:
TrimSrfStruct *: List of trimmed surfaces at all interior knots of TV
as trimmed surfaces.
|
---|
See Also:
UserDivideSrfAtInterCrvs
UserInterSrfAtAllKnots
UserDivideSrfsAtAllTVInteriorKnot
Keywords:
(srf_cntr.c:1417)
Prototype:
TrimSrfStruct *UserDivideOneTSrfAtAllMVInteriorKnot(const TrimSrfStruct *TSrf,
const MvarMVStruct *MV)
Description:
Subdivide the given trimmed surface, TSrf, embedded inside the domain of
multivariate MV, at all locations TSrf crosses a knot plane in the domain
of MV.
Parameters:
TSrf: | To subdivide.
|
---|
MV: | The multivariate.
|
---|
Returned Value:
TrimSrfStruct *: List of trimmed surfaces, subdivided at all interior
knots of MV.
|
---|
See Also:
UserDivideTSrfsAtAllMVInteriorKnot
UserDivideTSrfAtAllKnots
Keywords:
(tv_cntr.c:122)
Prototype:
MvarComposedTrivStruct *UserDivideOneTVAtAllMVInteriorKnot(
const TrivTVStruct *TV,
const MvarMVStruct *MV)
Description:
Subdivide the give trivariate, TV, embedded inside the domain of
multivariate MV, at all locations TV crosses a knot plane in the domain
of MV.
Parameters:
TV: | To subdivide.
|
---|
MV: | The multivariate.
|
---|
Returned Value:
MvarComposedTrivStruct *: List of MvarComposedTrivStruct which result
from the intersection of TV with all
interior knots of MV. Each element in the
can be either a tensor-product trivariate or
a V-model.
|
---|
See Also:
UserDivideOneTVAtAllMVInteriorKnot
UserDivideTVAtAllKnots
Keywords:
(srf_cntr.c:1773)
Prototype:
VMdlVModelStruct *UserDivideOneVMdlAtAllMVInteriorKnot(
const VMdlVModelStruct *VModel,
const MvarMVStruct *MV)
Description:
Subdivide the given vmodel, VMdl, embedded inside the domain of
multivariate MV, at all locations VMdl crosses a knot plane in the domain
of MV.
Parameters:
VModel: | To subdivide.
|
---|
MV: | The multivariate.
|
---|
Returned Value:
VMdlVModelStruct *: List of vmodels, subdivided at all interior knots of
MV as new vmodels.
|
---|
See Also:
UserDivideVMdlsAtAllMVInteriorKnot
UserDivideVMdlAtAllKnots
Keywords:
(srf_cntr.c:816)
Prototype:
TrimSrfStruct *UserDivideSrfAtInterCrvs(const CagdSrfStruct *Srf,
const CagdCrvStruct *ICrvs)
Description:
Divides a give surface into regions as specified by all intersection
curves, ICrvs, in the domain of Srf. ICrvs either start and end on the
boundary of the domain or form closed loops.
Parameters:
Srf: | To divide following regions defined by the intersection curves.
|
---|
ICrvs: | Either closed loops or curves that start/end on the boundary.
Can also be NULL in which case no intersections...
|
---|
Returned Value:
TrimSrfStruct *: List of trimmed surfaces of the different regions.
|
---|
See Also:
UserInterSrfAtAllKnots
UserDivideSrfAtAllTVInteriorKnot
TrimSrfsFromContours
Keywords:
(srf_cntr.c:1153)
Prototype:
TrimSrfStruct *UserDivideSrfsAtAllMVInteriorKnot(CagdSrfStruct *Srfs,
const MvarMVStruct *MV)
Description:
Subdivide the give surfaces, Srfs, embedded inside the domain of
multivariate MV, at all locations Srfs crosses a knot plane in the domain
of MV.
Parameters:
Srfs: | To subdivide.
|
---|
MV: | The multivariate.
|
---|
Returned Value:
TrimSrfStruct *: List of trimmed surfaces at all interior knots of TV
as trimmed surfaces.
|
---|
See Also:
UserDivideSrfAtInterCrvs
UserInterSrfAtAllKnots
UserDivideOneSrfAtAllTVInteriorKnot
Keywords:
(srf_cntr.c:1027)
Prototype:
TrimSrfStruct *UserDivideSrfsAtAllTVInteriorKnot(CagdSrfStruct *Srfs,
const TrivTVStruct *TV)
Description:
Subdivide the give surfaces, Srfs, embedded inside the domain of
trivariate TV, at all locations Srfs crosses a knot plane in the domain
of TV.
Parameters:
Srfs: | To subdivide.
|
---|
TV: | The trivariate.
|
---|
Returned Value:
TrimSrfStruct *: List of trimmed surfaces at all interior knots of TV
as trimmed surfaces.
|
---|
See Also:
UserDivideSrfAtInterCrvs
UserInterSrfAtAllKnots
UserDivideOneSrfAtAllTVInteriorKnot
Keywords:
(srf_cntr.c:1338)
Prototype:
TrimSrfStruct *UserDivideTSrfAtAllKnots(TrimSrfStruct *TSrf,
IrtPlnType Pln,
int Axis,
const CagdRType *KV,
int MinKV,
int MaxKV,
CagdRType *Param)
Description:
Intersect and subdivide the given trimmed surface, TSrf, at all
locations TSrf cross a t = KV[i], MinKV <= i < MaxKV, knot plane.
The plane is defined either as (Pln[0], Pln[1], Pln[2], t), or, if the
parameter Pln is NULL, as Axis = t.
Parameters:
TSrf: | To intersect and subdivide.
|
---|
Pln: | Along which to divide TSrf, or NULL if TSrf need to be
divided at Axis.
|
---|
Axis: | Along which to divideTSrf. Ignored if Pln is not NULL.
|
---|
KV: | The knots to divide along.
|
---|
MinKV, MaxKV: | The KV range to consider.
|
---|
Param: | If detected an isoparametric values, set Param to it.
|
---|
Returned Value:
TrimSrfStruct *: Subdivided trimmed surface.
|
---|
See Also:
UserDivideTSrfsAtAllMVInteriorKnot
UserDivideOneTSrfAtAllMVInteriorKnot
Keywords:
(srf_cntr.c:1471)
Prototype:
TrimSrfStruct *UserDivideTSrfsAtAllMVInteriorKnot(const TrimSrfStruct *TSrfs,
const MvarMVStruct *MV)
Description:
Subdivide the give trimmed surfaces, TSrfs, embedded inside the domain
of multivariate MV, at all locations TSrfs crosses a knot plane in the
domain of MV.
Parameters:
TSrfs: | To subdivide.
|
---|
MV: | The multivariate.
|
---|
Returned Value:
TrimSrfStruct *: List of trimmed surfaces, subdivided at all interior
knots of MV.
|
---|
See Also:
UserDivideTSrfsAtAllMVInteriorKnot
UserDivideOneTSrfAtAllMVInteriorKnot
Keywords:
(tv_cntr.c:184)
Prototype:
MvarComposedTrivStruct *UserDivideTVAtAllKnots(MvarComposedTrivStruct *CTV,
int Axis,
const CagdRType *KV,
int MinKV,
int MaxKV,
CagdRType *Param)
Description:
Intersect and subdivide the given trivariate, TV, at all locations TV
crosses a t = KV[i], MinKV <= i < MaxKV, knot plane.
The plane is defined either as (Pln[0], Pln[1], Pln[2], t), or, if the
parameter Pln is NULL, as Axis = t.
Parameters:
CTV: | To intersect and subdivide.
|
---|
Axis: | Along which to divideVMdl. Ignored if Pln is not NULL.
|
---|
KV: | The knots to divide along.
|
---|
MinKV, MaxKV: | The KV range to consider.
|
---|
Param: | If detected an isoparametric values, set Param to it.
|
---|
Returned Value:
MvarComposedTrivStruct *: Subdivided trivariate, as a mix of
trivariates and VModels.
|
---|
See Also:
UserDivideVMdlsAtAllMVInteriorKnot
UserDivideOneVMdlAtAllMVInteriorKnot
Keywords:
(tv_cntr.c:83)
Prototype:
MvarComposedTrivStruct *UserDivideTVsAtAllMVInteriorKnot(
const TrivTVStruct *TVs,
const MvarMVStruct *MV)
Description:
Subdivide the give trivariates, TVs, embedded inside the domain of
multivariate MV, at all locations TVs crosses a knot plane in the domain
of MV.
Parameters:
TVs: | To subdivide.
|
---|
MV: | The multivariate.
|
---|
Returned Value:
MvarComposedTrivStruct *: List of MvarComposedTrivStruct which result
from the intersection of TVs with all
interior knots of MV. Each element in the
can be either a tensor-product trivariate or
a V-model.
|
---|
See Also:
UserDivideOneTVAtAllMVInteriorKnot
Keywords:
(srf_cntr.c:1692)
Prototype:
VMdlVModelStruct *UserDivideVMdlAtAllKnots(VMdlVModelStruct *VModel,
IrtPlnType Pln,
int Axis,
const CagdRType *KV,
int MinKV,
int MaxKV,
CagdRType *Param)
Description:
Intersect and subdivide the given vmodel, VMdl, at all locations VMdl
cross a t = KV[i], MinKV <= i < MaxKV, knot plane.
The plane is defined either as (Pln[0], Pln[1], Pln[2], t), or, if the
parameter Pln is NULL, as Axis = t.
Parameters:
VModel: | To intersect and subdivide.
|
---|
Pln: | Along which to divide VMdl, or NULL if VMdl need to be
divided at Axis.
|
---|
Axis: | Along which to divideVMdl. Ignored if Pln is not NULL.
|
---|
KV: | The knots to divide along.
|
---|
MinKV, MaxKV: | The KV range to consider.
|
---|
Param: | If detected an isoparametric values, set Param to it.
|
---|
Returned Value:
VMdlVModelStruct *: Subdivided vmodel.
|
---|
See Also:
UserDivideVMdlsAtAllMVInteriorKnot
UserDivideOneVMdlAtAllMVInteriorKnot
Keywords:
(srf_cntr.c:1828)
Prototype:
VMdlVModelStruct *UserDivideVMdlsAtAllMVInteriorKnot(
const VMdlVModelStruct *VModels,
const MvarMVStruct *MV)
Description:
Subdivide the give vmodels, VMdls, embedded inside the domain of
multivariate MV, at all locations VMdls crosses a knot plane in the
domain of MV.
Parameters:
VModels: | To subdivide.
|
---|
MV: | The multivariate.
|
---|
Returned Value:
VMdlVModelStruct *: List of vmodels, subdivided at all interior knots
of MV, as new vmodels.
|
---|
See Also:
UserDivideVMdlsAtAllMVInteriorKnot
UserDivideOneVMdlAtAllMVInteriorKnot
Keywords:
(fntelem1.c:738)
Prototype:
UserFECElementStruct *UserFEBuildC1Mat(CagdCrvStruct *Crv1,
CagdSrfStruct *Srf1,
CagdCrvStruct *Crv2,
CagdSrfStruct *Srf2,
int IntegRes)
Description:
Evaluates the elements of the C1 intersection matrix as the integral of
the basis function's products along the intersecting boundary.
Parameters:
Crv1: | A boundary curve of Srf1 to determine its interesction interval
with Crv2. Has M control points.
|
---|
Srf1: | The first surface to examine for collision with Srf2.
|
---|
Crv2: | A boundary curve of Srf2 to determine its interesction interval
with Crv1.
|
---|
Srf2: | The second surface to examine for collision with Srf1.
|
---|
IntegRes: | Resolution of integration - number of sample per interval.
|
---|
Returned Value:
UserFECElementStruct *: Vector of size (M x M) elements of C1.
|
---|
See Also:
UserFEBuildKMat
UserFEBuildC2Mat
UserFEEvalRHSC
Keywords:
(fntelem1.c:851)
Prototype:
UserFECElementStruct *UserFEBuildC1Mat2(CagdPType *Crv1Pts,
int Crv1Length,
int Crv1Order,
CagdPType *Srf1Pts,
int Srf1ULength,
int Srf1VLength,
int Srf1UOrder,
int Srf1VOrder,
CagdPType *Crv2Pts,
int Crv2Length,
int Crv2Order,
CagdPType *Srf2Pts,
int Srf2ULength,
int Srf2VLength,
int Srf2UOrder,
int Srf2VOrder,
CagdEndConditionType EndCond,
int IntegRes)
Description:
Evaluates the elements of the C1 intersection matrix as the integral of
the basis function's products along the intersecting boundary.
Parameters:
Crv1Pts: | Crv1's control points (M).
|
---|
Crv1Length: | Dimensions of Crv1Pts vector.
|
---|
Crv1Order: | Order of Crv1.
|
---|
Srf1Pts: | Srf1's control points.
|
---|
Srf1ULength, Srf1VLength: | Dimensions of Srf1Pts vector.
|
---|
Srf1UOrder, Srf1VOrder: | Orders of Srf1.
|
---|
Crv2Pts: | Curve2's control points.
|
---|
Crv2Length: | Dimensions of Crv2Pts vector.
|
---|
Crv2Order: | Order of Curve2.
|
---|
Srf2Pts: | Srf2's control points.
|
---|
Srf2ULength, Srf2VLength: | Dimensions of Srf2Pts vector.
|
---|
Srf2UOrder, Srf2VOrder: | Orders of Srf2.
|
---|
EndCond: | Float or open, in reconstructed Crv1/2, Srf1/2.
|
---|
IntegRes: | Resolution of integration - number of sample per interval.
|
---|
Returned Value:
UserFECElementStruct *: Vector of size (M x M) elements of C1.
|
---|
See Also:
UserFEBuildKMat
UserFEBuildC2Mat
UserFEBuildC1Mat
UserFEEvalRHSC
Keywords:
(fntelem1.c:1045)
Prototype:
UserFECElementStruct *UserFEBuildC2Mat(CagdCrvStruct *Crv1,
CagdSrfStruct *Srf1,
CagdCrvStruct *Crv2,
CagdSrfStruct *Srf2,
int IntegRes)
Description:
Evaluates the elements of the C1 intersection matrix as the integral of
the basis function's products along the intersecting boundary.
Parameters:
Crv1: | A boundary curve of Srf1 to determine its interesction interval
with Crv2. Has N control points.
|
---|
Srf1: | The first surface to examine for collision with Srf2.
|
---|
Crv2: | A boundary curve of Srf2 to determine its interesction interval
with Crv1. Has M control points.
|
---|
Srf2: | The second surface to examine for collision with Srf1.
|
---|
IntegRes: | Resolution of integration - number of sample per interval.
|
---|
Returned Value:
UserFECElementStruct *: Vector of size (N x M) elements of C2.
|
---|
See Also:
UserFEBuildKMat
UserFEBuildC1Mat
UserFEEvalRHSC
Keywords:
(fntelem1.c:1159)
Prototype:
UserFECElementStruct *UserFEBuildC2Mat2(CagdPType *Crv1Pts,
int Crv1Length,
int Crv1Order,
CagdPType *Srf1Pts,
int Srf1ULength,
int Srf1VLength,
int Srf1UOrder,
int Srf1VOrder,
CagdPType *Crv2Pts,
int Crv2Length,
int Crv2Order,
CagdPType *Srf2Pts,
int Srf2ULength,
int Srf2VLength,
int Srf2UOrder,
int Srf2VOrder,
CagdEndConditionType EndCond,
int IntegRes)
Description:
Evaluates the elements of the C2 intersection matrix as the integral of
the basis function's products along the intersecting boundary.
Parameters:
Crv1Pts: | Crv1's control points.
|
---|
Crv1Length: | Dimensions of Crv1Pts vector (M).
|
---|
Crv1Order: | Order of Crv1.
|
---|
Srf1Pts: | Srf1's control points.
|
---|
Srf1ULength, Srf1VLength: | Dimensions of Srf1Pts vector.
|
---|
Srf1UOrder, Srf1VOrder: | Orders of Srf1.
|
---|
Crv2Pts: | Curve2's control points.
|
---|
Crv2Length: | Dimensions of Crv2Pts vector (N).
|
---|
Crv2Order: | Order of Curve2.
|
---|
Srf2Pts: | Srf2's control points.
|
---|
Srf2ULength, Srf2VLength: | Dimensions of Srf2Pts vector.
|
---|
Srf2UOrder, Srf2VOrder: | Orders of Srf2.
|
---|
EndCond: | Float or open, in reconstructed Crv1/2, Srf1/2.
|
---|
IntegRes: | Resolution of integration - number of sample per interval.
|
---|
Returned Value:
UserFECElementStruct *: Vector of size (N x M) elements of C2.
|
---|
See Also:
UserFEBuildKMat
UserFEBuildC2Mat
UserFEBuildC1Mat
UserFEEvalRHSC
Keywords:
(fntelem1.c:316)
Prototype:
UserFEKElementStruct *UserFEBuildKMat(CagdSrfStruct *Srf,
int IntegRes,
IrtRType E,
IrtRType Nu,
int *Size)
Description:
Evaluates the elements of the stiffness matrix K as the integral of the
basis function's derivatives of surface Srf. Let B be a linear vector of
all n polynomial patches' basis functions of Srf. Let S be the matrix
E [1 Nu 0]
S = --------- [Nu 1 0] ,
(1- Nu^2) [0 0 (1-Nu) / 2]
let L be the differentiation operator of
L = [d/du 0 d/dv]
[0 d/dv d/dx] ,
and let M be the application of L to all basis functions in B. M is a
matrix of size (2n x 3). Finally compute and return the integrals of
K = M S M^T , K is a matrix of size (2n x 2n).
Because the integration is to be conducted in spatial space instead of
parametric domain, we must normalize by the determinant of the Jacobian
hence the integration is conducted numerically.
Parameters:
Srf: | To compute its K stiffness matrix.
|
---|
IntegRes: | Resolution of integration - number of sample per interval. *
|
---|
E: | Young Module value.
|
---|
Nu: | Poisson coefficient, between 0.0 and 0.5.
|
---|
Size: | Number of degree-of-freedom (basis functions) Srf contains.
|
---|
Returned Value:
UserFEKElementStruct *: Vector of size n^2 with the (n x n) elmnts of K.
|
---|
See Also:
UserFEBuildKMat2
UserFEBuildC1Mat
UserFEBuildC2Mat
UserFEEvalRHSC
Keywords:
(fntelem1.c:476)
Prototype:
UserFEKElementStruct *UserFEBuildKMat2(CagdPType *Points,
int ULength,
int VLength,
int UOrder,
int VOrder,
CagdEndConditionType EndCond,
int IntegRes,
IrtRType E,
IrtRType Nu,
int *Size)
Description:
Evaluates the elements of the stiffness matrix K as the integral of the
basis function's derivatives of surface Srf. Let B be a linear vector of
all n polynomial patches' basis functions of Srf. Let S be the matrix
E [1 Nu 0]
S = --------- [Nu 1 0] ,
(1- Nu^2) [0 0 (1-Nu) / 2]
let L be the differentiation operator of
L = [d/du 0 d/dv]
[0 d/dv d/dx] ,
and let M be the application of L to all basis functions in B. M is a
matrix of size (2n x 3). Finally compute and return the integrals of
K = M S M^T , K is a matrix of size (2n x 2n).
Because the integration is to be conducted in spatial space instead of
parametric domain, we must normalize by the determinant of the Jacobian
hence the integration is conducted numerically.
Parameters:
Points: | Current surface control points.
|
---|
ULength, VLength: | Dimensions of Points vectors.
|
---|
UOrder, VOrder: | Surface Order in U and V.
|
---|
EndCond: | End conditions - open, float, etc.
|
---|
IntegRes: | Resolution of integration - number of sample per interval. *
|
---|
E: | Young Module value.
|
---|
Nu: | Poisson coefficient, between 0.0 and 0.5.
|
---|
Size: | Number of degree-of-freedom (basis functions) Srf contains.
|
---|
Returned Value:
UserFEKElementStruct *: Vector of size n^2 with the (n x n) elmnts of K.
|
---|
See Also:
UserFEBuildKMat
Keywords:
(fntelem1.c:1239)
Prototype:
IrtRType UserFEEvalRHSC(UserFECElementStruct *C,
CagdCrvStruct *Crv1,
CagdCrvStruct *Crv2)
Description:
Evaluates the right hand side (RHS) of the i'th C constraint - of the
i'th basis function.
Parameters:
C: | The current row of C1 matrix of M elements.
|
---|
Crv1: | A boundary curve of Srf1 to determine its interesction interval
with Crv2. Has M control points.
|
---|
Crv2: | A boundary curve of Srf2 to determine its interesction interval
with Crv1. Has N control points.
|
---|
Returned Value:
IrtRType: Current value of constraint. Should be zero if satisified.
|
---|
See Also:
UserFEBuildKMat
UserFEBuildC2Mat
UserFEBuildC1Mat
Keywords:
(fntelem1.c:567)
Prototype:
UserFEInterIntervalStruct *UserFEGetInterInterval(CagdCrvStruct *Crv1,
CagdSrfStruct *Srf1,
CagdCrvStruct *Crv2,
CagdSrfStruct *Srf2)
Description:
Derives the interval(s) where Crv1 and Crv2 intersect, two boundary
curves of Srf1 and Srf2.
Parameters:
Crv1: | A boundary curve of Srf1 to determine its intersection interval
with Crv2.
|
---|
Srf1: | The first surface to examine for collision with Srf2.
|
---|
Crv2: | A boundary curve of Srf2 to determine its intersection interval
with Crv1.
|
---|
Srf2: | The second surface to examine for collision with Srf1.
|
---|
Returned Value:
UserFEInterIntervalStruct *: A list of elements, each holding one
continuous interval of intersection,
specifying the proper intervals in both
Crv1 and Crv2.
|
---|
See Also:
Keywords:
(fntelem1.c:525)
Prototype:
CagdBType UserFEPointInsideSrf(CagdSrfStruct *Srf, CagdPType Pt)
Description:
Returns TRUE if given point Pt is inside surface Srf, FALSE otherwise.
Parameters:
Srf: | Surface to test the inclusion of Pt in, in R^2.
|
---|
Pt: | 2D point to test if inside Srf.
|
---|
Returned Value:
CagdBType: TRUE if inside, FALSE otherwise.
|
---|
See Also:
Keywords:
(user_ftl.c:57)
Prototype:
void UserFatalError(UserFatalErrorType ErrID)
Description:
Trap User_lib errors right here. Provides a default error handler for the
user library. Gets an error description using UserDescribeError, prints it
and exit the program using exit.
Parameters:
ErrID: | Error type that was raised.
|
---|
Returned Value:
Keywords:
error handling
(font3d.c:361)
Prototype:
IPPolygonStruct *UserFontBspCrv2Poly(CagdCrvStruct *BspCrv,
IrtRType Tolerance)
Description:
Converting a closed B-spline to a Polygon.
Parameters:
BspCrv: | Pointer to the Curve.
|
---|
Tolerance: | The tolerance used calculating the polygon.
|
---|
Returned Value:
IPPolygonStruct *: Pointer to the new Polygon.
|
---|
Keywords:
(font3d.c:472)
Prototype:
IPObjectStruct *UserFontBspList2Plgns(IPObjectStruct *BspListObj,
IrtRType Tol,
const char *Name)
Description:
Converts a list object of Bspline merged closed curves (outline of the
font) to polygons that fill the text.
Parameters:
BspListObj: | A list object of Bspline curves.
|
---|
Tol: | Tolerance of approximation.
|
---|
Name: | Base name to use for constructed objects. Can be NULL.
|
---|
Returned Value:
IPObjectStruct *: The created polygons.
|
---|
See Also:
UserFontBspList2TrimSrfs
Keywords:
(font3d.c:795)
Prototype:
IPObjectStruct *UserFontBspList2Solids(IPObjectStruct *BspListObj,
UserFont3DEdgeType ExtStyle,
IrtRType ExtOffset,
IrtRType ExtHeight,
IrtRType Tol,
CagdBType GenTrimSrfs,
const char *Name)
Description:
Converts a list object of Bspline merged closed curves (outline of the
font) to polygons that fill the text.
Parameters:
BspListObj: | A list object of Bspline curves.
|
---|
ExtStyle: | Type of 3D solid geometry: chamfered corners, rounded, etc.
|
---|
ExtOffset: | Size of the chamfer/rounding.
|
---|
ExtHeight: | Height of the 3D solid constructed text.
|
---|
Tol: | Tolerance of approximation.
|
---|
GenTrimSrfs: | RUE to generate trimmed surfaces. FALSE for polygons.
|
---|
Name: | Base name to use for constructed objects. Can be NULL.
|
---|
Returned Value:
IPObjectStruct *: The created polygons.
|
---|
Keywords:
(font3d.c:1064)
Prototype:
IPObjectStruct *UserFontBspList2SweptTubes(const IPObjectStruct *BspListObj,
UserFont3DEdgeType CornerStyle,
const CagdCrvStruct *CrossSection,
IrtRType Tol,
const char *Name)
Description:
Converts a list object of B-spline merged closed curves (outline of the
font) to circular sweep surfaces around them.
Parameters:
BspListObj: | A list object of B-spline curves.
|
---|
CornerStyle: | ype of C^1 discontinuous corners: chamfered, rounded, etc.
|
---|
CrossSection: | Cross section curve to sweep.
|
---|
Tol: | Tolerance of approximation.
|
---|
Name: | Base name to use for constructed objects. Can be NULL.
|
---|
Returned Value:
IPObjectStruct *: The sweep surfaces.
|
---|
Keywords:
(font3d.c:550)
Prototype:
IPObjectStruct *UserFontBspList2TrimSrfs(IPObjectStruct *BspListObj,
IrtRType Tol,
const char *Name)
Description:
Converts a list object of Bspline merged closed curves (outline of the
font) to trimmed surfaces that fill the text.
Parameters:
BspListObj: | A list object of Bspline curves.
|
---|
Tol: | Tolerance of approximation.
|
---|
Name: | Base name to use for constructed objects. Can be NULL.
|
---|
Returned Value:
IPObjectStruct *: The created trimmed surfaces.
|
---|
See Also:
UserFontBspList2Plgns
Keywords:
(font3d.c:401)
Prototype:
CagdCrvStruct *UserFontBzrList2BspList(IPObjectStruct *BzrListObj,
IrtBType *HaveHoles)
Description:
Converts a list object of Bezier curves into a list of Bspline curves
by chaining adjacent Bezier curve segments into closed Bsplines loops.
Parameters:
BzrListObj: | A list object of Bezier curves.
|
---|
HaveHoles: | Will be set to TRUE if holes are detected (examining the
orientation of the loops).
|
---|
Returned Value:
CagdCrvStruct *: A list of Bspline loop curves.
|
---|
Keywords:
(wfnt2bzr.c:150)
Prototype:
IPObjectStruct *UserFontConvertFontToBezier(const UserFontText Text,
const UserFontName FontName,
UserFontStyleType FontStyle,
IrtRType SpaceWidth,
int MergeToBsp,
const char *RootObjName)
Description:
Extracts Bezier curves from windows' fonts.
Parameters:
Text: | Text string.
|
---|
FontName: | Font name.
|
---|
FontStyle: | Font style.
|
---|
SpaceWidth: | Space width. Space, in points, added to individual chars.
|
---|
MergeToBsp: | TRUE to merge Bezier curves into larger B-spline curves,
FALSE to leave the original (font) Bezier curves.
|
---|
RootObjName: | Name of root object.
|
---|
Returned Value:
IPObjectStruct *: Extracted text object or NULL in case of failure.
|
---|
Keywords:
(font3d.c:103)
Prototype:
int UserFontConvertTextToGeom(const UserFontText Text,
const UserFontName FontName,
UserFontStyleType FontStyle,
IrtRType FontSize,
IrtRType TextSpace,
UserFont3DEdgeType Text3DEdgeType,
const IrtRType Text3DSetup[2],
IrtRType Tolerance,
UserFontGeomOutputType OutputType,
IrtBType CompactOutput,
const char *PlacedTextBaseName,
IPObjectStruct **PlacedTextGeom,
char **ErrorStr)
Description:
Converts Text to geometry. Note this function will behave differently
on different platforms (i.e. Windows vs. Unix.
Parameters:
Text: | The string text to convert to geometry.
|
---|
FontName: | The font to use for conversion.
|
---|
FontStyle: | The font style (italic, bold, etc.)
|
---|
FontSize: | Created text scaling relative factor.
|
---|
TextSpace: | In-word relative spacing.
|
---|
Text3DEdgeType: | or 3D text geometry created edges/corners
(i.e. rounded or chamfered.).
|
---|
Text3DSetup: | For 3D text, a vector of (Chamfer offset/Sweep radius
size, 3D extruded vertical distance).
|
---|
Tolerance: | For 2D filled polygons and 3D solid text geometry.
|
---|
OutputType: | Selects the type of geometry to create:
0. Outline Bezier curves as in the font data.
1. Outline B-spline curves (merging Bezier curves in 1).
2. Solid 2D polygons, for the outline geometry
(polygons).
3. Both Solid 2D and B-spline outline (2+3 above).
4. Full 3D text (polygons).
5. Solid 2D polygons, for the outline geometry
((trimmed) surfaces).
6. Full 3D text ((trimmed) surfaces).
|
---|
CompactOutput: | If TRUE, merged trimming surfaces or polygons into
single objects.
|
---|
PlacedTextBaseName: | Base name to use in placed text. Can be NULL.
|
---|
PlacedTextGeom: | utput created geometry will be returned here.
|
---|
ErrorStr: | Will be set with the error message if was one.
|
---|
Returned Value:
int: TRUE if successful, FALSE if conversion failed.
|
---|
See Also:
UserFontConvertFontToBezier
UserFontFTStringOutline2BezierCurves
UserFontBspCrv2Poly
UserFontBspList2Solids
Keywords:
(ffnt2bzr.c:284)
Prototype:
IPObjectStruct *UserFontFTStringOutline2BezierCurves(
const UserFontText Text,
const UserFontName FontName,
IrtRType Spacing,
int MergeToBsp,
const char *RootObjName,
const char **ErrStr)
Description:
Given a string and a font name - convert to a set of curves in IRIT
format.
Parameters:
Text: | String to convert to Bezier outline.
|
---|
FontName: | Font to read the outline from.
|
---|
Spacing: | To apply between the characters.
|
---|
MergeToBsp: | TRUE to merge the Bezier curves into larger B-spline
curves, FALSE to leave the original (font) Bezier curves.
|
---|
RootObjName: | Name of root object.
|
---|
ErrStr: | A string describing the error, if any.
|
---|
Returned Value:
IPObjectStruct *: List of curves in IRIT format representing the string.
|
---|
See Also:
Freetype font library
http://www.freetype.org.
Keywords:
(fontlout.c:149)
Prototype:
int UserFontLayoutOverShape(const UserFontText Text,
const UserFontName FontName,
UserFontStyleType FontStyle,
IrtRType FontSize,
const IrtRType FontSpace[3],
IrtRType Tolerance,
UserFont3DEdgeType Text3DEdge,
const IrtRType Text3DSetup[2],
UserFontAlignmentType Alignment,
const IPPolygonStruct *BoundingPoly,
UserFontGeomOutputType OutputType,
IPObjectStruct **PlacedTextGeom,
char **ErrorStr)
Description:
Layout the given text over the given bounding region. Constructed Text
will be controlled by FontName, FontStyle, FontSize, and FontSpace and
will be aligned to follow TextAlignment.
All construction is conducted over the XY plane, in 2D.
Parameters:
Text: | The text to layout. A string.
|
---|
FontName: | The font name to use. I.e. "Times new Roman".
|
---|
FontStyle: | Font style to use. I.e. italics.
|
---|
FontSize: | The size of the constructed text.
|
---|
FontSpace: | (WordWidth, SpaceWidth, LineHeight) spacing, specified
in text font's point units.
|
---|
Tolerance: | For 2D filled polygons and 3D solid text geometry.
|
---|
Text3DEdge: | For 3D text geometry controls edges (i.e. chamferred.).
|
---|
Text3DSetup: | For 3D text, a vector of (Chamfer offset size, 3D
extruded vertical distance).
|
---|
Alignment: | Text alignment, left, centered, etc.
|
---|
BoundingPoly: | A closed region to place the text inside.
|
---|
OutputType: | Selects the type of geometry to create:
1. Outline Bezier curves as in the font data.
2. Outline B-spline curves (merging Bezier curves in 1).
3. Filling 2D polygons, for the outline geometry.
4. Full 3D text.
|
---|
PlacedTextGeom: | The result synthesized placed (geometry of the) text.
Actually only the base line of the text is guaranteed
to be in.
NULL if error.
|
---|
ErrorStr: | Will be updated with an error description if was one,
or with NULL if all went well.
|
---|
Returned Value:
int: TRUE if all text fitted in the BoundingPoly, FALSE otherwise.
FALSE might also be returned if we failed to generate the text,
in which case ErrorStr will hold some error description.
|
---|
See Also:
UserFontLayoutOverShape2
Keywords:
(fontlout.c:78)
Prototype:
int UserFontLayoutOverShape2(const UserFontText Text,
const UserFontName FontName,
UserFontStyleType FontStyle,
IrtRType FontSize,
const IrtRType FontSpace[3],
IrtRType Tolerance,
UserFont3DEdgeType Text3DEdge,
const IrtRType Text3DSetup[2],
UserFontAlignmentType Alignment,
const CagdCrvStruct *BoundingCrv,
UserFontGeomOutputType OutputType,
IPObjectStruct **PlacedTextGeom,
char **ErrorStr)
Description:
Layout the given text over the given bounding region. Constructed Text
will be controlled by FontName, FontStyle, FontSize, and FontSpace and
will be aligned to follow TextAlignment.
All construction is conducted over the XY plane, in 2D.
Parameters:
Text: | The text to layout. A string.
|
---|
FontName: | The font name to use. I.e. "Times new Roman".
|
---|
FontStyle: | Font style to use. I.e. italics.
|
---|
FontSize: | The size of the constructed text.
|
---|
FontSpace: | (WordWidth, SpaceWidth, LineHeight) spacing, specified
in text font's point units.
|
---|
Tolerance: | For 2D filled polygons and 3D solid text geometry.
|
---|
Text3DEdge: | For 3D text geometry controls edges (i.e. chamferred.).
|
---|
Text3DSetup: | For 3D text, a vector of (Chamfer offset size, 3D
extruded vertical distance).
|
---|
Alignment: | Text alignment, left, centered, etc.
|
---|
BoundingCrv: | A closed curve to place the text inside.
|
---|
OutputType: | Output should be original Bezier curves, merged
B-spline curves, filled planar polys, 3D polys, etc.
|
---|
PlacedTextGeom: | The placed (geometry of the) text in. Actually only
the base line of the text is guaranteed to be in.
NULL if error.
|
---|
ErrorStr: | Will be updated with an error description if was one,
or with NULL if all went well.
|
---|
Returned Value:
int: TRUE if all text fitted in the BoundingPoly, FALSE otherwise. *
|
---|
See Also:
UserFontLayoutOverShape
Keywords:
(fontlout.c:195)
Prototype:
void UserFontLayoutOverShapeFree(struct UserFontWordLayoutStruct *Words)
Description:
Free the allocated words and their geometry.
Parameters:
Words: | Linked list of words to free.
|
---|
Returned Value:
See Also:
UserFontLayoutOverShape
UserFontLayoutOverShape2
UserFontLayoutOverShapeGenWords
UserFontLayoutOverShapePlaceWords.
Keywords:
(fontlout.c:270)
Prototype:
UserFontWordLayoutStruct *UserFontLayoutOverShapeGenWords(
const UserFontText Text,
const UserFontName FontName,
UserFontStyleType FontStyle,
IrtRType FontSize,
const IrtRType FontSpace[3],
IrtRType Tolerance,
UserFont3DEdgeType Text3DEdge,
const IrtRType Text3DSetup[2],
UserFontAlignmentType Alignment,
const IPPolygonStruct *BoundingPoly,
UserFontGeomOutputType OutputType,
IrtBType CompactOutput,
const char *OutputBaseName,
UserFontDimInfoStruct *FontDims,
char **ErrorStr)
Description:
Constructed words as a preparation to layout the text over the given
bounding region.
All construction is conducted over the XY plane, in 2D.
Parameters:
Text: | The text to layout. A string.
|
---|
FontName: | The font name to use. I.e. "Times new Roman".
|
---|
FontStyle: | Font style to use. I.e. italics.
|
---|
FontSize: | The size of the constructed text.
|
---|
FontSpace: | (WordWidth, SpaceWidth, LineHeight) spacing, specified
in text font's point units.
|
---|
Tolerance: | For 2D filled polygons and 3D solid text geometry.
|
---|
Text3DEdge: | For 3D text geometry controls edges (i.e. chamferred.).
|
---|
Text3DSetup: | For 3D text, a vector of (Chamfer offset size, 3D
extruded vertical distance).
|
---|
Alignment: | Text alignment, left, centered, etc.
|
---|
BoundingPoly: | A closed region to place the text inside.
|
---|
OutputType: | Selects the type of geometry to create:
0. Outline Bezier curves as in the font data.
1. Outline B-spline curves (merging Bezier curves in 1).
2. Solid 2D polygons, for the outline geometry
(polygons).
3. Both Solid 2D and B-spline outline (2+3 above).
4. Full 3D text (polygons).
5. Solid 2D polygons, for the outline geometry
((trimmed) surfaces).
6. Full 3D text ((trimmed) surfaces).
|
---|
CompactOutput: | If TRUE, merged trimming surfaces or polygons into
single objects.
|
---|
OutputBaseName: | Base name to use in output geometry.
|
---|
FontDims: | Structure to be updated with font dimensions if all
went well.
|
---|
ErrorStr: | Will be updated with an error description if was one,
or with NULL if all went well.
|
---|
Returned Value:
UserFontWordLayoutStruct *: Generated words.
|
---|
See Also:
UserFontLayoutOverShape
UserFontLayoutOverShape2
UserFontLayoutOverShapeFree
UserFontLayoutOverShapePlaceWords.
Keywords:
(fontlout.c:408)
Prototype:
int UserFontLayoutOverShapePlaceWords(UserFontWordLayoutStruct *Words,
IrtRType FontSize,
const IrtRType FontSpace[3],
UserFontAlignmentType Alignment,
const UserFontDimInfoStruct *FontDims,
const IPPolygonStruct *BoundingPoly,
IPObjectStruct **PlacedTextGeom)
Description:
Translate the given (geometry of) words so they fit into the given
bounding shape BoundingPoly.
Parameters:
Words: | The ordered list of words to place into bounding shape
|
---|
FontSize: | The size of the constructed text.
|
---|
FontSpace: | (WordWidth, SpaceWidth, LineHeight) spacing, specified
in text font's point units.
|
---|
Alignment: | Align each line of the placed words to the left,
centered, etc.
|
---|
FontDims: | Dimensions information on this font.
|
---|
BoundingPoly: | The region to place the text in (actually only base
line will be in).
|
---|
PlacedTextGeom: | Where to place the created geometry.
Organized as an object per character, grouped in
list objects as words, all grouped in this list object.
word object will have line number, "TextLineCnt", and
word count in line, "TextWordCnt", attributes.
|
---|
Returned Value:
int: TRUE if all text fitted in the BoundingPoly, FALSE otherwise.
|
---|
See Also:
UserFontLayoutOverShape
UserFontLayoutOverShape2
UserFontLayoutOverShapeFree
UserFontLayoutOverShapeGenWords.
Keywords:
(gear2d_sweep.c:1630)
Prototype:
IPObjectStruct *UserGr2DSwpArrangeTeeth(const CagdCrvStruct *Centrode,
const CagdCrvStruct *Tooth,
CagdRType ToothLen,
int NTeeth)
Description:
Arrange prescribed number of copies of given tooth along the given curve
after applying the required transformation to the tooth.
Parameters:
Centrode: | Curve along which to arrange teeth.
|
---|
Tooth: | Copies of which to place.
|
---|
ToothLen: | Arc-length distance between consecutive teeth.
|
---|
NTeeth: | Number of copies of tooth to place.
|
---|
Returned Value:
IPObjectStruct *: List of curves representing the teeth arrangement.
|
---|
Keywords:
(gear2d_sweep.c:1744)
Prototype:
CagdCrvStruct *UserGr2DSwpComputeCentrode(const MvarMVStruct *Rot[2],
const MvarMVStruct *Trans,
const CagdSrfStruct *Plane,
CagdRType SolverStepSize)
Description:
Compute the centrode of the gear as the zero set of the velocity of the
given relative motion.
Parameters:
Rot: | Rotational part of rigid motion.
|
---|
Trans: | Translational part of rigid motion.
|
---|
Plane: | The bounded plane in which to compute the centrode.
|
---|
SolverStepSize: | tep size to use in solver.
|
---|
Returned Value:
CagdCrvStruct *: The centrode as a curve.
|
---|
Keywords:
(gear2d_sweep.c:1840)
Prototype:
IPObjectStruct *UserGr2DSwpConjugateShape(const IPObjectStruct *CrvSegList,
const MvarMVStruct *Rot[2],
const MvarMVStruct *Trans,
CagdRType SolverStepSize)
Description:
Compute the conjugate of a given planar shape along given one parameter
family of rigid motions. This is done by computing the swept volume of
of the input shape, subtracting it from the plane and retaining only the
bounded portion of the plane.
Parameters:
CrvSegList: | Input planar shape represented by a closed loop of
of curve segments. Curve segments may meet with G1-
discontinuity at end-points.
|
---|
Rot: | Rotational part of rigid motion.
|
---|
Trans: | Translational part of rigid motion.
|
---|
SolverStepSize: | tep size to use in solver.
|
---|
Returned Value:
IPObjectStruct *: The conjugate shape as a closed loop of curve segments.
|
---|
Keywords:
(gear2d_sweep_motion.c:164)
Prototype:
void UserGr2DSwpGenInverseMotion(const MvarMVStruct *Rot[2],
const MvarMVStruct *Trans,
MvarMVStruct *InvRot[2],
MvarMVStruct **InvTrans)
Description:
Compuates the inverse of the given one parameter family of rigid motions.
Parameters:
Rot: | Rotational part of rigid motion.
|
---|
Trans: | Translational part of rigid motion.
|
---|
InvRot: | Rotational part of inverse rigid motion.
|
---|
InvTrans: | Translational part of inverse rigid motion.
|
---|
Returned Value:
Keywords:
(gear2d_sweep_motion.c:357)
Prototype:
void UserGr2DSwpGenMotionOblong(CagdRType ToothLen,
int NumTeethSrc,
int NumTeethCirc,
int NumTeethLin,
CagdBType InverseMotion,
MvarMVStruct *Rot[2],
MvarMVStruct **Trans)
Description:
Generate a one parameter family of rigid motions involving rolling of a
circular gear along an oblong shaped curve without slipping.
Parameters:
ToothLen: | Arc-length of the base of one tooth.
|
---|
NumTeethSrc: | Number of teeth in the circular gear.
|
---|
NumTeethCirc: | Number of teeth in the circular part of the oblong gear.
|
---|
NumTeethLin: | Number of teeth in the linear part of the oblong gear.
|
---|
InverseMotion: | RUE if inverse of the motion is required.
|
---|
Rot: | To return rotational part of rigid motion in.
|
---|
Trans: | To return translational part of rigid motion in.
|
---|
Returned Value:
Keywords:
(gear2d_sweep_motion.c:574)
Prototype:
void UserGr2DSwpGenNonUniformMotion(MvarMVStruct *Rot[2],
MvarMVStruct **Trans,
CagdRType GearDist,
const CagdCrvStruct *RelVeloFn)
Description:
Generate a one parameter family of rigid motions involving rotation by
angle 2\pi and translation along a circular path of given radius at
non-uniform angular velocity, prescribed by function supplied as an
argument.
Parameters:
Rot: | Rotational part of rigid motion.
|
---|
Trans: | Translational part of rigid motion.
|
---|
GearDist: | Radius of circle along which translation occurs.
|
---|
RelVeloFn: | calar curve giving the non-uniform circular displacement
profile. It must map interval [0,1] to [0,2\pi].
|
---|
Returned Value:
Keywords:
(gear2d_sweep_motion.c:240)
Prototype:
void UserGr2DSwpGenUniformMotion(MvarMVStruct *Rot[2],
MvarMVStruct **Trans,
CagdRType GearDist)
Description:
Generate a one parameter family of rigid motions involving rotation by
angle 2\pi and translation along a circular path of given radius at
uniform angular velocity.
Parameters:
Rot: | Rotational part of rigid motion.
|
---|
Trans: | Translational part of rigid motion.
|
---|
GearDist: | Radius of circle along which translation occurs.
|
---|
Returned Value:
Keywords:
(gear2d_sweep.c:2010)
Prototype:
void UserGr2DSwpMain(UserGr2DSwpParamStruct *Params)
Description:
Main function for invoking required functionalities for the
2D gear design.
Parameters:
Params: | arameters for call. FunctionSelect member of this structure
dictates the type of functionality to be invoked. Rest of the
members are specific to the functionality as described below
along with return value.
USER_GEAR2D_SWEEP_CONJUGATE - Input gear, Rotation, Translation,
SolverStepSize.
Returns the conjugate gear.
USER_GEAR2D_SWEEP_ARRANGE_TEETH - Overall gear shape, tooth shape,
Arclength of base of tooth, number of teeth.
Returns the gear with such a teeth arrangement.
USER_GEAR2D_SWEEP_CENTRODE - Rotation, Translation, Plane of
computation, SolverStepSize.
Returns the centrode.
USER_GEAR2D_SWEEP_UNIFORM_MOTION - Distance between centers of the
two gears.
Returns rotation and translation.
USER_GEAR2D_SWEEP_NON_UNIFORM_MOTION - Distance between center of
the two gears, scalar curve specifying non-uniform circular
displacement profile. It must map interval [0,1] to [0,2\pi].
Returns rotation and translation.
USER_GEAR2D_SWEEP_OBLONG_MOTION - Arclength of tooth-base, number of
teeth in source gear, number of teeth in circular part of target
gear, number of teeth in linear part of target gear, flag to
specify if inverse motion is desired.
Returns rotation and translation.
USER_GEAR2D_SWEEP_INVERSE_MOTION - Rotation, translation.
Returns rotation and translation for inverse motion.
|
---|
Returned Value:
Keywords:
(gear2d_sweep_motion.c:188)
Prototype:
MvarMVStruct *UserGr2DSwpMatVecMult(const MvarMVStruct *Mat[2],
const MvarMVStruct *Vec)
Description:
Multiply a matrix and a vector, both given as multivariates.
Parameters:
Mat: | Matrix represented as multivariates.
|
---|
Vec: | Vector represented as multivariate.
|
---|
Returned Value:
MvarMVStruct *: The result of the multiplication.
|
---|
Keywords:
(gear2d_sweep.c:240)
Prototype:
IPObjectStruct *UserGr2DSwpReadCrvFromFile(char *Filename)
Description:
Reads a planar shape from input file, in the form of a closed loop of
curve segments.
Parameters:
Returned Value:
IPObjectStruct *: The planar shape read.
|
---|
Keywords:
(hrmt_crv.c:421)
Prototype:
VoidPtr UserHCEditCopy(VoidPtr HC)
Description:
Duplicates the data structures for editing planar piecewise cubic
Hermite curves.
Parameters:
HC: | A handle on the edited Hermite curve to be duplicated.
|
---|
Returned Value:
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:469)
Prototype:
int UserHCEditCreateAppendCtlpt(VoidPtr HC,
CagdRType x,
CagdRType y,
int MouseMode)
Description:
Append control point at the end of the current curve.
Parameters:
HC: | A handle on edited Hermite curve to append control point to.
|
---|
x, y: | The coordinate of the control point.
|
---|
MouseMode: | for mouse down, 1 for mouse move, 2 for mouse up (done).
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:567)
Prototype:
int UserHCEditCreateDone(VoidPtr HC, CagdRType LastX, CagdRType LastY)
Description:
Initializes the interface for editing planar piecewie cubic Hermite
curves.
Parameters:
HC: | A handle on the edited Hermite curve to insert control point to.
|
---|
LastX, LastY: | Last control point of curve, during creation stage.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:382)
Prototype:
void UserHCEditDelete(VoidPtr HC)
Description:
Delete the data structures for editing planar piecewise cubic Hermite
curves.
Parameters:
HC: | A handle on the edited Hermite curve to be deleted.
|
---|
Returned Value:
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:676)
Prototype:
int UserHCEditDeleteCtlpt(VoidPtr HC, CagdRType x, CagdRType y)
Description:
Delete the control point at the given location on the current curve.
Parameters:
HC: | A handle on edited Hermite curve to delete control point from.
|
---|
x, y: | The coordinate of the point.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:1612)
Prototype:
int UserHCEditDrawCtlpts(VoidPtr HC, int DrawTans)
Description:
Draw the control points of the given HC, using the defined drawing
function.
Parameters:
HC: | A handle on edited Hermite curve to update its Index segment.
|
---|
DrawTans: | o we want to draw tangents as well?
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:1845)
Prototype:
int UserHCEditEvalDefTans(VoidPtr HC, int Index)
Description:
Routine to update the tangents of the given HC curve to a reasonable
magnitude and direction. Useful when tangent handles are not provided
to the end user.
Parameters:
HC: | A handle on edited Hermite curve to update its tangents.
|
---|
Index: | Of the curve whose tangent is to be updated (with Index + 1).
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:132)
Prototype:
VoidPtr UserHCEditFromCurve(const CagdCrvStruct *Crv, CagdRType Tol)
Description:
Create a Hermite curve from the given regular curve.
Parameters:
Crv: | Regular curve to convert to an Hermite curve.
|
---|
Tol: | Tolerance of approximation if the input curve is higher degree
than cubic.
|
---|
Returned Value:
VoidPtr: A Handle on the created HC to be edited.
|
---|
See Also:
SymbApproxCrvAsBzrCubics
UserHCEditInit
Keywords:
(hrmt_crv.c:1459)
Prototype:
CagdCrvStruct *UserHCEditGetCrvRepresentation(VoidPtr HC, int ArcLen)
Description:
Constructs one (Bspline) curve representation for the given HC.
Parameters:
HC: | A handle on edited Hermite curve to convert to Bspline.
|
---|
ArcLen: | TRUE to approximately parametrize the geometry to follow arc
length parametrization, FALSE to apply uniform parametrization.
|
---|
Returned Value:
CagdCrvStruct *: A Bspline curve representing the given HC.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:283)
Prototype:
CagdBType UserHCEditGetCtlPtCont(VoidPtr HC, int Index)
Description:
Gets the continuity of the Index control point in the given curve.
Parameters:
HC: | A handle on edited Hermite curve to update its Index segment.
|
---|
Index: | Of control point to get its C^1 continuity state.
|
---|
Returned Value:
CagdBType: TRUE for C^1 continuity, FALSE for C^0.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:1565)
Prototype:
int UserHCEditGetCtlPtTan(VoidPtr HC, int Index, CagdPType Pos, CagdPType Tan)
Description:
Returns the position and tangent of the Index control point of the HC
curve. First point is index zero. Tan is always pointing along the
forward moving direction of the curve.
Parameters:
HC: | A handle on edited Hermite curve to feicth one of its HC
control points and tangent.
|
---|
Index: | Of control point and tangent to fetch. If Index is negative
the backward tangent is fecthed.
|
---|
Pos: | Position to fetch.
|
---|
Tan: | Tangent to fetch.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:1534)
Prototype:
int UserHCEditGetNumCtlPt(VoidPtr HC)
Description:
Returns number of HC control points this HC curve has.
These points are end points of Hermite intervals. For example, a curve
with three Hermite intervals will have 4 HC control points.
Parameters:
HC: | A handle on edited Hermite curve to get its size.
|
---|
Returned Value:
int: Number of HC control points.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:88)
Prototype:
VoidPtr UserHCEditInit(CagdRType StartX, CagdRType StartY, CagdBType Periodic)
Description:
Initializes the interface for editing planar piecewise cubic Hermite
curves.
Parameters:
StartX, StartY: | Starting control point of curve.
|
---|
Periodic: | TRUE if curve is to be closed.
|
---|
Returned Value:
VoidPtr: A Handle on the created HC to be edited.
|
---|
See Also:
UserHCEditFromCurve
UserHCEditIsPeriodic
UserHCEditSetPeriodic
UserHCEditSetCtlPtCont
UserHCEditSetDrawCtlptFunc
UserHCEditDelete
UserHCEditTranslate
UserHCEditCreateAppendCtlpt
UserHCEditCreateDone
UserHCEditInsertCtlpt
UserHCEditDeleteCtlpt
UserHCEditMoveCtl
UserHCEditMoveCtlPt
UserHCEditMoveCtlTan
UserHCEditIsNearCrv
UserHCEditIsNearCtlPt
UserHCEditIsNearCtlTan
UserHCEditGetCrvRepresentation
UserHCEditDrawCtlpts
UserHCEditTransform
UserHCEditRelativeTranslate
UserHCEditEvalDefTans
Keywords:
(hrmt_crv.c:599)
Prototype:
int UserHCEditInsertCtlpt(VoidPtr HC, CagdRType x, CagdRType y, CagdRType t)
Description:
Insert new control point at the given parameter value of the curve.
Parameters:
HC: | A handle on the edited Hermite curve to insert control point to.
|
---|
x, y: | The coordinate of the point.
|
---|
t: | The parameter location to insert a new control point.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:1188)
Prototype:
int UserHCEditIsNearCrv(VoidPtr HC,
CagdRType x,
CagdRType y,
CagdRType *t,
CagdRType Eps,
int NormalizeZeroOne)
Description:
Routine to examine if given location is near HC to within Eps.
Parameters:
HC: | A handle on edited hermite curve to see if we are close.
|
---|
x, y: | The coordinate of the given location.
|
---|
t: | The closest parameter location detected near the mouse.
|
---|
Eps: | Distance to consider it near.
|
---|
NormalizeZeroOne: | If TRUE detected parameter is normalized into zero to
one for beginning to end. Otherwise, if FALSE, the returned
parameter is 'x.y' where x is the Hermite segment number and y
is the relative location within the segment.
|
---|
Returned Value:
int: TRUE if given location is indeed near curve, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:1295)
Prototype:
int UserHCEditIsNearCtlPt(VoidPtr HC,
CagdRType *x,
CagdRType *y,
int *Index,
int *UniqueID,
CagdRType Eps)
Description:
Routine to examine if given location is near a control point of HC to
within Eps.
Parameters:
HC: | A handle on edited Hermite curve to see if we are close.
|
---|
x, y: | The coordinate of the given location. This coordinated will be
updated with the precise control point location, if indeed near.
|
---|
Index: | f closest control point, if found any below distance Eps, in
the curve, first points is indexed 0.
|
---|
UniqueID: | The unique integer ID that is assigned to this control point.
|
---|
Eps: | Distance to consider it near.
|
---|
Returned Value:
int: TRUE if given location is indeed near a control point,
FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:1381)
Prototype:
int UserHCEditIsNearCtlTan(VoidPtr HC,
CagdRType *x,
CagdRType *y,
int *Index,
int *UniqueID,
CagdBType *Forward,
CagdRType Eps)
Description:
Routine to examine if given location is near a control tangent of HC, to
within Eps.
Parameters:
HC: | A handle on edited Hermite curve to see if we are close.
|
---|
x, y: | The coordinate of the given location. This coordinated will
be updated with the precise control tangent location, if
indeed near.
|
---|
Index: | Of closest control tangent, if found any below distance Eps.
|
---|
UniqueID: | he unique integer ID that is assigned to this control point.
|
---|
Forward: | TRUE for forward tangent, FALSE for backward tangent.
|
---|
Eps: | Distance to consider it near.
|
---|
Returned Value:
int: TRUE if given location is indeed near a control tangent,
FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:195)
Prototype:
int UserHCEditIsPeriodic(VoidPtr HC)
Description:
Gets the periodic conditions of the given HC curve.
Parameters:
HC: | A handle on the Hermite curve to be examined.
|
---|
Returned Value:
int: TRUE if given HC curve is periodic, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:1693)
Prototype:
int UserHCEditMatTrans(VoidPtr HC, IrtHmgnMatType Mat)
Description:
Applies given transformion, in place, to given curve HC as specified by
Mat. Only the XY coordinates are processed.
Curve HC is first translated by Dir and then scaled by Scale.
Parameters:
HC: | A handle on edited Hermite curve to transform, in place.
|
---|
Mat: | Transformation matrxi to apply to HC.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
CagdCrvTransform
UserHCEditInit
UserHCEditTransform
Keywords:
(hrmt_crv.c:876)
Prototype:
int UserHCEditMoveCtl(VoidPtr HC,
CagdRType OldX,
CagdRType OldY,
CagdRType NewX,
CagdRType NewY,
int MouseMode,
CagdRType *MinDist)
Description:
Move a control point or tangent (the closest detected) of the current
curve.
Parameters:
HC: | A handle on edited Hermite curve to move control pt/tan in.
|
---|
OldX, OldY: | The original coordinate of the control pt/tan.
|
---|
NewX, NewY: | The original coordinate of the control pt/tan.
|
---|
MouseMode: | 0 for mouse down, 1 for mouse move, 2 for mouse up (done),
3 for reset/clear state.
|
---|
MinDist: | If not NULL and MouseMode is 0, returns the minimal
distance found.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:953)
Prototype:
int UserHCEditMoveCtlPt(VoidPtr HC,
CagdRType OldX,
CagdRType OldY,
CagdRType NewX,
CagdRType NewY,
int MouseMode)
Description:
Move a control point of the current curve.
Parameters:
HC: | A handle on edited Hermite curve to move control point in.
|
---|
OldX, OldY: | The original coordinate of the point.
|
---|
NewX, NewY: | The new coordinate of the point.
|
---|
MouseMode: | 0 for mouse down, 1 for mouse move, 2 for mouse up (done).
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:1031)
Prototype:
int UserHCEditMoveCtlTan(VoidPtr HC,
CagdRType OldX,
CagdRType OldY,
CagdRType NewX,
CagdRType NewY,
int MouseMode)
Description:
Move a control tangent of the current curve.
Parameters:
HC: | A handle on edited Hermite curve to move control tangent in.
|
---|
OldX, OldY: | The original coordinate of the tangent.
|
---|
NewX, NewY: | The new coordinate of the tangent.
|
---|
MouseMode: | 0 for mouse down, 1 for mouse move, 2 for mouse up (done).
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:1788)
Prototype:
int UserHCEditRelativeTranslate(VoidPtr HC, CagdRType *Dir)
Description:
Applies a relative translation, in place, to given curve HC as specified
by Dir. The full translation amount is applied to the last point while
the first is kept stationary and all interior control points are moved
their relative portion.
Parameters:
HC: | A handle on edited Hermite curve to relatively transform,
in place.
|
---|
Dir: | Relative translation amount, applied in full just to last
control point.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:318)
Prototype:
void UserHCEditSetCtlPtCont(VoidPtr HC, int Index, CagdBType Cont)
Description:
Sets the continuity of the Index control point in the given curve.
Parameters:
HC: | A handle on edited Hermite curve to update its Index segment.
|
---|
Index: | Of control point to change its C^1 continuity.
|
---|
Cont: | TRUE to make C^1 continuous, FALSE for only C^0.
|
---|
Returned Value:
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:356)
Prototype:
void UserHCEditSetDrawCtlptFunc(VoidPtr HC,
UserHCEditDrawCtlPtFuncType CtlPtDrawFunc,
void *FuncData)
Description:
Sets the function to invoke when the control points/tangents are to be
drawn.
Parameters:
HC: | A handle on edited Hermite curve to update its Index segment.
|
---|
CtlPtDrawFunc: | Function to use to draw control points/tangent.
|
---|
FuncData: | Optional data to pass to the call back function.
|
---|
Returned Value:
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:220)
Prototype:
void UserHCEditSetPeriodic(VoidPtr HC, CagdBType Periodic)
Description:
Sets the periodic conditions of the given HC curve.
Parameters:
HC: | A handle on Hermite curve to be set periodic (or not).
|
---|
Periodic: | TRUE if curve is to be closed (periodic).
|
---|
Returned Value:
See Also:
UserHCEditInit
Keywords:
(hrmt_crv.c:1738)
Prototype:
int UserHCEditTransform(VoidPtr HC, CagdRType *Dir, CagdRType Scl)
Description:
Applies an affine transform, in place, to given curve HC as specified by
Dir and Scale.
Curve HC is first translated by Dir and then scaled by Scale.
Parameters:
HC: | A handle on edited Hermite curve to transform, in place.
|
---|
Dir: | Translation amount, in the XY plane.
|
---|
Scl: | Scaling amount, in the XY plane.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
CagdCrvTransform
UserHCEditInit
UserHCEditMatTrans
Keywords:
(hrmt_crv.c:766)
Prototype:
int UserHCEditUpdateCtl(VoidPtr HC,
int CtlIndex,
CagdBType IsPosition,
CagdRType NewX,
CagdRType NewY)
Description:
Uodate a control point or tangent of the current curve.
Parameters:
HC: | A handle on edited Hermite curve to move control pt/tan in.
|
---|
CtlIndex: | The index of the control pt/tan to update
|
---|
IsPosition: | TRUE if we aim at updating the position of control pt/tan.
If FALSE, positive CtlIndex denotes forward tangent whereas
negative CtlIndex denotes a backward tangent.
|
---|
NewX, NewY: | New position or tangent vector to update with.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserHCEditInit
Keywords:
(srf_cntr.c:642)
Prototype:
CagdSrfDirType UserInterSrfAtAllKnots(CagdSrfStruct *Srf,
IrtPlnType Pln,
int Axis,
const CagdRType *KV,
int MinKV,
int MaxKV,
CagdRType *Param)
Description:
Intersect the given surface, Srf, at all locations Srf cross a t = KV[i],
MinKV <= i < MaxKV, knot plane.
The plane is defined either as (Pln[0], Pln[1], Pln[2], t), or, if the
parameter Pln is NULL, as Axis = t.
All resulting intersection curves are accumulated in the surfaces as
"intercrvs" attributes, in place.
Parameters:
Srf: | To intersect.
|
---|
Pln: | Along which to divide TSrfs, or NULL if TSrfs need to be
divided at Axis.
|
---|
Axis: | Along which to divide TSrfs. Ignored if Pln is not NULL.
|
---|
KV: | The knots to divide along.
|
---|
MinKV, MaxKV: | The KV range to consider.
|
---|
Param: | If detected an isoaprameteric values, set Param to it.
|
---|
Returned Value:
CagdSrfDirType: CAGD_NO_DIR if all intersections are general, or
CAGD_CONST_U/V_DIR if found an isoparameteric
intersection in the returned value and set Param to it.
|
---|
See Also:
UserDivideSrfAtInterCrvs
UserDivideSrfAtAllTVInteriorKnot
Keywords:
(srf_cntr.c:529)
Prototype:
CagdCrvStruct *UserInterSrfByAlignedHyperPlane(const CagdSrfStruct *Srf,
int Axis,
CagdRType t)
Description:
Intersect the given surface, Srf, with an axis-aligned hyperplane. The
hyperplane is defined by an axis number and a value.
Parameters:
Srf: | To intersect.
|
---|
Axis: | The axis which is normal to the hyperplane.
|
---|
t: | The position of the hyperplane on the axis.
|
---|
Returned Value:
CagdCrvStruct *: The intersection curve(s) of the surface with a plane.
|
---|
See Also:
UserDivideSrfAtInterCrvs
UserDivideSrfAtAllTVInteriorKnot2
Keywords:
(srf_cntr.c:562)
Prototype:
MvarPolylineStruct *UserInterSrfByAlignedHyperPlane2(const CagdSrfStruct *Srf,
int Axis,
CagdRType t)
Description:
Intersect the given surface, Srf, with an axis-aligned hyperplane. The
hyperplane is defined by an axis number and a value.
Parameters:
Srf: | To intersect.
|
---|
Axis: | The axis which is normal to the hyperplane.
|
---|
t: | The position of the hyperplane on the axis.
|
---|
Returned Value:
MvarPolylineStruct *: A piecewise-linear approximation of the
intersection of the surface with the plane.
|
---|
See Also:
UserDivideSrfAtInterCrvs
UserDivideSrfAtAllTVInteriorKnot2
Keywords:
(kinematc.c:1637)
Prototype:
void UserKnmtcsEvalAtParams(UserKnmtcsGenInfoStruct *GI,
int PolyIdx,
int PtIdx)
Description:
Evaluates kinematic mechanism at given solution. Solution is stored as
a linked list of polylines, each position is uniquely determined by
indices of the polyline and the point inside this polyline
Parameters:
GI: | Handle on general information of kinematics module.
|
---|
PolyIdx: | Polyline index.
|
---|
PtIdx: | Point index.
|
---|
Returned Value:
Keywords:
(kinematc.c:1567)
Prototype:
CagdCrvStruct *UserKnmtcsEvalCrvTraces(UserKnmtcsGenInfoStruct *GI)
Description:
Evaluates the motions curves of all the points in the kinematic
mechanism at the solution.
Parameters:
GI: | Handle on general information of kinematics module.
|
---|
Returned Value:
CagdCrvStruct *: List of curves of all traces of all points in the
mechanisms.
|
---|
Keywords:
(kinematc.c:1197)
Prototype:
void UserKnmtcsFreeSol(UserKnmtcsGenInfoStruct *GI)
Description:
Deallocates and frees the kinematic solution stored as a list of
multi-variate polyline structures.
Parameters:
GI: | Handle on general information of kinematics module.
|
---|
Returned Value:
Keywords:
(kinematc.c:1538)
Prototype:
int UserKnmtcsNumOfSolPts(UserKnmtcsGenInfoStruct *GI, int PolyIdx)
Description:
For a solution polyline at "PolyIdx"'s position, the number of solution
points is returned.
Parameters:
GI: | Handle on general information of kinematics module.
|
---|
PolyIdx: | Polyline index.
|
---|
Returned Value:
int: Number of points in the polyline.
|
---|
Keywords:
(kinematc.c:1215)
Prototype:
void UserKnmtcsSolveDone(UserKnmtcsGenInfoStruct *GI)
Description:
Reset all information given to the solver to initial state.
Parameters:
GI: | Handle on general information of kinematics module.
|
---|
Returned Value:
Keywords:
(kinematc.c:1249)
Prototype:
int UserKnmtcsSolveMotion(UserKnmtcsGenInfoStruct **GI,
const UserKnmtcsStruct *System,
CagdRType NumTol,
CagdRType SubTol,
CagdRType Step,
int *SolDim,
CagdBType FilterSols)
Description:
For given planar kinematic mechanism, the system of constrains is
created and solved. The list of solution points (in the parametric space)
is returned.
Parameters:
GI: | Handle on newly (dynamically) general information
of kinematics module.
|
---|
System: | Kinematic system.
|
---|
NumTol: | Numerical tolerance.
|
---|
SubTol: | Subdivision tolerance.
|
---|
Step: | "Animation" step.
|
---|
SolDim: | Dimension of the solution, even if invalid/error.
|
---|
FilterSols: | True to filter and return only numerically
converging solutions.
|
---|
Returned Value:
int: Number of solution curves, if any. -1 if error.
|
---|
Keywords:
(ln_access.c:800)
Prototype:
UserLineAccessSrfLineAccessResStruct *UserLineAcccessSrfLineAccessFromObject(
const IPObjectStruct *Obj)
Description:
Reconstruct a UserLineAccessSrfLineAccessResStruct (a results structure
from its Irit Object representation.
Parameters:
Obj: | The object from which to reconstruct the result.
|
---|
Returned Value:
UserLineAccessSrfLineAccessResStruct *: The reconstructed results
structure (or NULL if failed).
|
---|
See Also:
UserLineAcccessSrfLineAccessToObject
Keywords:
(ln_access.c:442)
Prototype:
void UserLineAccessSrfLineAccessResFree(
UserLineAccessSrfLineAccessResStruct *SrfLineAccess)
Description:
Frees a UserLineAccessSrfLineAccessResStruct and all its internal
data structures.
Parameters:
Returned Value:
See Also:
UserLineAccessSrfLineAccessResNew
Keywords:
(ln_access.c:2049)
Prototype:
UserLineAccessSrfLineAccessResStruct *UserLineAccessSrfLineAccessibility(
CagdSrfStruct *InSrfs,
UserLineAccessParamsStruct *Params,
IPObjectStruct **ExtraOutObjs)
Description:
Analyze a surface for accessibility for infinite tangent line-cutting.
The function produces a UserLineAccessSrfLineAccessResStruct, which
contains the line-accessibility information for each of the small patches
into which the surface is partitioned.
Parameters:
InSrfs: | The input surface to analyze for line-accessibility.
|
---|
Params: | The parameters struct for the line-accessibility
analysis.
|
---|
ExtraOutObjs: | Output parameter. Any extra visualization data will be
written into this parameter. Ignored if NULL.
|
---|
Returned Value:
UserLineAccessSrfLineAccessResStruct *: A structure containing
line-accessibility information
for all the patches.
|
---|
See Also:
UserLineAccessSrfPreProcess
Keywords:
Line-accessibility analysis
periodic surfaces
(ln_access.c:1868)
Prototype:
CagdSrfStruct *UserLineAccessSrfPreProcess(CagdSrfStruct **Srf)
Description:
Preprocess a surface for line-accessibility analysis. This function
ensures that the surface is B-spline, and checks if it periodic in one of
its directions, and if it collapses into a point at one of the ends of its
domains.
Parameters:
Srf: | The surface to preprocess. Can be freed and replaced.
|
---|
Returned Value:
CagdSrfStruct *: The preprocessed surface.
|
---|
See Also:
UserLineAccessSrfLineAccessibility
Keywords:
Line-accessibility analysis
periodic surfaces
(ln_access_cut.c:178)
Prototype:
IPVertexStruct *UserLineCutPathToCutDirs(
const CagdSrfStruct *Srf,
const UserLineAccessSrfLineAccessResStruct *SrfAccessibility,
const CagdCrvStruct *CuttingCrv,
CagdRType MinAngleFromPathTan,
int NumSamples)
Description:
Compute the tangent-line cutting directions for a given cut-path curve,
given a surface and a line accessibility results structure.
Parameters:
Srf: | The surface for which the cutting directions are
to be computed.
|
---|
SrfAccessibility: | The line accessibility results structure.
|
---|
CuttingCrv: | The cut-path curve in the parametric space of Srf.
|
---|
MinAngleFromPathTan: | he minimum allowed angle of a cutting tangent
direction from the curve movement direction Used
for preventing cutting tangent directions from
being too close to the movement direction of the
cut-path.
|
---|
NumSamples: | The number of points to sample on the cut-path.
|
---|
Returned Value:
IPVertexStruct *: A lits of points, each containing the Euclidean
coordinates, and the direction of the cutting
tangent.
|
---|
See Also:
Keywords:
(ln_access_cut.c:1005)
Prototype:
CagdSrfStruct *UserLineCutRobotPathToRuledSrf(const IPVertexStruct *CutPath,
CagdRType HalfWidth)
Description:
Converts the cut path into a ruled surface.
Parameters:
CutPath: | Cut path to approximate as a ruled surface.
|
---|
HalfWidth: | One side (half) of the Width of built ruled surface.
|
---|
Returned Value:
CagdSrfStruct *: Created ruled surfaces.
|
---|
See Also:
Keywords:
(micro3tile.c:3593)
Prototype:
IPObjectStruct *UserMJConnectMToNTilesInJISrfs(
UserMJJoinInterSrfRefStruct *JISrfRefList,
CagdRType NrmScale,
CagdRType NrmBlendingRatio,
CagdRType SaddleRatio,
CagdBType CheckJacobian)
Description:
Creates the bridging tiles that connect the anchoring faces of the
inside tiles from one microstructure set to the anchoring faces of the
boundary tiles from the other microstructure set. Two sets of anchoring
faces are combined respectively from the sets stored in each trimming
surface of the input trimming surface list. We denote the anchoring face
set of the smaller size "R"(rare)-surface-set (R-Set) and the face set of
the larger size "N"(numerous)-surface-set (N-Set). Then we find the
matchings between R-Set and N-Set.
Matchings can be either 1-to-1 or 1-to-2 and constructed via a two-step
process: we first find the maximal number of 1-to-1 matchings that
minimize the weighted sum of the matchings. The weight of each match is
computed from the distance between the matched N and R surfaces. Only the
surfaces visible from each other (this visibility is computed based on the
anchoring directions) have an edge with a valid weight.
The first matching gives us at most R matched pairs depending on the
position of the surfaces and leaves us at least (N - R) unmatched surfaces
from N-Set. In the second matching, we attempt to find the matches between
the remaining (N - R) surfaces from N-set and R surfaces from R-Set. We
also minimize the sum of weights in the second matching as well.
Finally, we gather the first and second matching results and determine
the types of each match. If R_1 surface is matched to N_1 surface in the
first matching and N_2 surface in the second matching, we create a
bifurcation tile that has R_1 surface as an inlet and N_1 and N_2 surface
as outlet surfaces. If R_1 surface is solely matched to N_1, then we
create a bridging tile between R_1 and N_1 by sweeping R_1 surface to
The directions of the anchoring surfaces are computed by blending the
partial derivatives of the trivariate and the surface normal directions
using the scale parameter NrmScale.
Parameters:
JISrfRefList: | list of the pointers that point to the trimming
surfaces that contains the anchoring faces in N-Set and
R-Set.
|
---|
NrmScale: | The scale parameter that controls the length of the
start and end directions of the sweeping axes of the
tubular tiles. The length of the directions is equal to
the distance between the start and end points multiplied
by NrmScale.
|
---|
NrmBlendingRatio: | he scale parameter that controls the direction of the
base trivariate in a bifurcation tile. If 0, the direction
of the base trivariate is the derivariate of the trivariate
adjacent to the inlet anchoring face. If 1, the direction
is the surface normal of the inlet face. Otherwise, the
direction of the base trivariate is blended from these two.
|
---|
SaddleRatio: | he scale parameter to control the size of the saddle in
the base trivariate. Determines the size of top surface of
the base trivariate.
|
---|
CheckJacobian: | f TRUE, the trivariates composed of bridging tiles are
constructed to be positive Jacobian as much as possible.
|
---|
Returned Value:
IPObjectStruct *: A list of joint tiles connecting M interior surfaces
and N touching surfaces. Consists of 1-1 and 1-2 tiles.
|
---|
Keywords:
(micro3tile.c:2851)
Prototype:
IPObjectStruct *UserMJConnectToJISrfs(
UserMJJoinInterSrfRefStruct *JISrfRefList,
CagdRType NrmScale,
CagdRType NrmBlendingRatio,
CagdBType CheckJacobian)
Description:
Computes the bridging tiles that bridge the anchoring faces of to-be-soon
-bridged inside tiles of one microstructure set to their associated
trimming boundary surfaces. Each anchoring face is stored in InteriorSrfs
of the nearest trimming boundary surface, but we construct the bridging
tiles altogether for the input trimming boundary surfaces. A bridging tile
is created by sweeping the anchoring face to the trimming surface and the
sweeping axis curve to connect the center point of the anchoring face, one
intermediate point in the anchoring direction and its projection point on
the trimming surface. The start direction of the sweeping axis (the
anchoring direction) is derived by blending the partial derivative of the
trivariate adjacent to the anchoring face and the surface normal of the
anchoring surface, and scaled by NrmScale. After the axis curve of every
swept tile is calculated, we detect the collisions between the bridging
tiles and resolve the collisions if exist. Only the anchoring faces that
are free from collision are used to create the bridging tiles.
Parameters:
JISrfRefList: | list of the pointers that refer to the trimming boundary
surfaces storing the info of the tile anchoring faces to
be bridged.
|
---|
NrmScale: | The scale parameter to adjust the size of start and end
directions of the sweeping axis curve. Controls the shape
of the swept volume.
|
---|
NrmBlendingRatio: | he scale parameter that controls the direction of the
starting directon of the sweeping axis. If 1, the direction
is the surface normal of the inlet face. Otherwise, the
direction of the base trivariate is blended from these two.
|
---|
CheckJacobian: | f TRUE, the trivariates composed of bridging tiles are
constructed to be positive Jacobian as much as possible.
|
---|
Returned Value:
IPObjectStruct *: A list of the bridging tiles. The list contains all
bridging tiles connecting the interior tiles in the
same primitive microstructure set, even though the
tiles join to the different trimming surface.
|
---|
Keywords:
(micro1join.c:359)
Prototype:
void UserMJJoinInterSrfFree(UserMJJoinInterSrfStruct *JISrf)
Description:
Free the data structure to store a surface that trimming a volume in
micro-join.
Parameters:
JISrf: | A data structure to be freed.
|
---|
Returned Value:
See Also:
Keywords:
(micro1join.c:389)
Prototype:
void UserMJJoinInterSrfListFree(UserMJJoinInterSrfStruct *JISrfList)
Description:
Free a list of the surfaces that interface trimming volumes in micro
joining.
Parameters:
JISrfList: | A list of the surfaces trimming volumes and used in micro
join.
|
---|
Returned Value:
See Also:
Keywords:
(micro3tile.c:4107)
Prototype:
IPObjectStruct *UserMJMergeAndSaveTileTVs(UserMJTileStrctStruct **MTileList,
int NumVMdlMacroTVs,
const IPObjectStruct *BridgeTiles)
Description:
Merge the regular tiles and the bridging tiles into a single list and
save the auxiliary information in each trivariate. Each trivariate stores
the following information in its attributes:
*
TrivID - A unique integer ID is assigned to each trivariate. Tile ID and
PartID is encoded in TrivID as follows.
TrivID = TileID * 10 + PartID
For a regular tile, PartID corresponds to the trivariate ID
inside the unit tile, and PartID is always 0 for a bridging tile.
Now, PartID only supports up to ten-trivariates unit tile.
VMdlTVId - An non-negative integer ID to represent the macro TV to which
this trivariate belongs. -1 in case of the bridging tiles.
TrivAdjID[UMin |UMax|VMin|VMax|WMin|WMax] - IDs of the adjacent
trivariates are stored with the face directions they are
interfacing with the modification flags to make them compatible.
For instance, if a trivariate 0's UMin iso-surface interfaces
with a trivariate 4's WMax iso-surface, TV0 has the attribute of
[TrivAdjIDUMin 4 flag0], while TV4 has the attribute of
[TrivAdjWMax 0 flag1]. Flag0 and Flag1 are the bitmask of the
modification flags from CagdSrfSame3.
TrivJcbBnd - The ratio of the minimum margin in the domain of the
trivariate, which guarantees the positive Jacobian. It can be one
of the values in ClipRatios. If it fails to guarantee positive
Jacobian, -1 is saved. Note some trivariates have, by definition,
zero Jacobian on the boundaries (like the rounded ones), and that
this test is conservative as we compute J symbolically and
examine the bounding box of the coefficients of J.
TrivCollide - When the global collision between two branch bridging TVs
are not resolved in the final microstructure, we mark the
colliding pair to their counter parts.
rgb - Color is assigned to each trivariate based on TrivJcbBnd.
Parameters:
MTileList: | A list of the primitive microtile sets. Each tile set
contains the regular tiles constructed from function
composition and the base trivariate which represents
the macro shape in which the micro tiles are populated.
If all of the tiles are used, then the RGB attribute of
the list is set to 1. If the tiles are partially used,
the membership information of each tile is encoded in
the RGB value of the individual tile.
|
---|
NumVMdlMacroTVs: | umber of the regular tile sets.
|
---|
BridgeTiles: | A list of the briding tile sets. Each briding tile sets
contains the briding tiles connecting the tiles in one
primitive tile set to their nearest trimming surfaces
or the briding tiles joining two different primitive
tile sets.
|
---|
Returned Value:
IPObjectStruct *: TRUE if success. FALSE otherwise.
|
---|
Keywords:
(micro1join.c:2177)
Prototype:
IPObjectStruct *UserMJMicroJoinSynthesize(const VMdlVModelStruct *VMdlOrig,
CagdRType NrmScale,
CagdRType NrmBlendingRatio,
CagdRType SaddleRatio,
CagdRType BndTileMargin,
CagdBType CheckJacobian)
Description:
Synthesize the microtile in the trimmed VModel. A trimmed VModel has a
list of V-cells, each of which holds the list of trivariates that
contribute to the construction of the cell. Microstructures are generated
according to the priority of these trivariates: from the trivariate of
highest priority, we first gather V-cells that hold the given trivariate
and have not been tiled yet. The trimming surfaces of these gathered
V-cells are collected, which are the outmost boundary surfaces that do not
originate from the current trivariate.
These trimming surfaces are used in testing the membership of each tile
composed in the trivariate: The tiles generated by function composition are
classified as either inside (the V-cells), outside, or on-the-boundary,
which transversally intersect with the trimming surfaces. All the other
tiles except the inside tiles are purged and, among the inside tiles,
to-be-bridged tiles are identified. We then insert the new bridging tiles
from some anchoring faces of the to-be-bridged tiles to the nearest
trimming surfaces (in case that the trimming surface is the outmost
boundary surface of the entire VModel), or the anchoring faces of other
tiles composed in other trivariate (in case that the trimming surface is
an interface between two V-Cells tiled by the different trivariates.
The form of the new bridging tile is either a tubular tile that bridges
two anchoring faces or one anchoring face to the trimming surface, or a
bifurcation tile that bridges one inlet face from one tile set to two
outlet anchoring faces in the other tile set.
Parameters:
VMdlOrig: | The trimmed VModel representing the macro shape. Each
trivariate in the VModel stores the tiling information and
the priority value in the attribute "MVMSInfo", if exists.
|
---|
NrmScale: | The scale parameter that controls the length of the
start and end directions of the sweeping axes of the
tubular tiles. The length of the directions is equal to
the distance between the start and end points multiplied by
NrmScale.
|
---|
NrmBlendingRatio: | he scale parameter that controls the direction of the
base trivariate in a bifurcation tile. If 0, the direction
of the base trivariate is the derivative of the trivariate
adjacent to the inlet anchoring face. If 1, the direction
is the surface normal of the inlet face. Otherwise, the
direction of the base trivariate is blended from these two.
|
---|
SaddleRatio: | he scale parameter to control the size of the saddle in
the base trivariate. Determines the size of top surface of
the base trivariate.
|
---|
BndTileMargin: | If BndTileMargin > 0, the tiles not only intersecting
with the trimming surface but also having the minimum
distance of one trivariate smaller than the size of the
trivariate multiplied by BndTileMargin are classified as
intersecting tiles and purged away.
|
---|
CheckJacobian: | f TRUE, the trivariates composed of bridging tiles are
constructed to be positive Jacobian as much as possible.
|
---|
Returned Value:
IPObjectStruct *: A list of micro tiles in the trimmed VModel.
|
---|
Keywords:
(micro1join.c:328)
Prototype:
void UserMJTileJointSrfFree(UserMJTileJointSrfStruct *TileJSrf)
Description:
Free a list of data structure to store the information of tile joint
surfaces used in joining micro tiles.
Parameters:
TileJSrf: | A list of tile bound surfaces in micro joining.
|
---|
Returned Value:
See Also:
Keywords:
(micro1join.c:274)
Prototype:
void UserMJTileStrctFree(UserMJTileStrctStruct *MJT)
Description:
Free the data structure to store micro tiling results.
Parameters:
MJT: | The data structure to be freed.
|
---|
Returned Value:
See Also:
Keywords:
(micro1join.c:300)
Prototype:
void UserMJTileStrctListFree(UserMJTileStrctStruct *MJTList)
Description:
Free a list of data structure to store micro tiling results at once.
Parameters:
MJTList: | A list of data structures to be freed.
|
---|
Returned Value:
See Also:
Keywords:
(micro1join.c:218)
Prototype:
UserMJTileStrctStruct *UserMJTileStrctNew(const TrivTVStruct *BaseMap,
const IPObjectStruct *MicroTiles)
Description:
Allocate a memory to store the information needed in joining micro tiles.
Parameters:
BaseMap: | Simple trivariate map to define a macro shape.
|
---|
MicroTiles: | A list of micro tile geometries.
|
---|
Returned Value:
UserMJTileStrctStruct *: A data structure to store the micro-tiling
information.
|
---|
See Also:
Keywords:
(micro1join.c:2027)
Prototype:
void UserMJVMdlBooleanCallBack(const VMdlParamsStruct *Params,
const VMdlVModelStruct *VMdl1,
const VMdlVModelStruct *VMdl2,
VMdlVModelStruct *ResVMdl,
VMdlBoolOpType BoolOp,
void *AuxData)
Description:
Callback function called in the VModel boolean operation. Copy the micro
tiling information of the trivariates of the input VModels to the
trivariates of output VModel. Depending on the type of boolean operator,
the function behaves differently. In case of subtraction, information of
the first operation only is copied. In case of union and intersection, the
informtion of both operands are copied. In the special case when one of
operands is NULL, we search the tiling information stored in the attribute
of IPObjectStruct.
Parameters:
Params: | The tiling information retrieved from the attribute of
IPObjectStruct.
|
---|
VMdl1: | The first operand of the boolean operator.
|
---|
VMdl2: | The second operand of the boolean operator.
|
---|
ResVMdl: | The output VModel computed from the given boolean
operation.
|
---|
BoolOp: | The type of boolean operator. Could be one of the
following VMDL_BOOL_OP_SUBTRACTION,
VMDL_BOOL_OP_UNION or VMDL_BOOL_OP_INTERSECTION.
|
---|
AuxData: | The hash table that maps the trivariates in the input
VModels to the trivariates in the output VModel.
|
---|
Returned Value:
Keywords:
(imgshd3d.c:129)
Prototype:
IPObjectStruct *UserMake3DStatueFrom2Images(const char *Image1Name,
const char *Image2Name,
int DoTexture,
const IPObjectStruct *Blob,
User3DSpreadType BlobSpreadMethod,
UserImgShd3dBlobColorType
BlobColorMethod,
int Resolution,
int Negative,
IrtRType Intensity,
IrtRType MinIntensity,
int MergePolys)
Description:
Creates Resolution^2 blobs that looks like the 1st image (gray level)
from the XZ plane and like the 2nd image from the YZ plane.
Parameters:
Image1Name: | Name of 1st image to load.
|
---|
Image2Name: | Name of 2nd image to load.
|
---|
DoTexture: | TRUE to add 'uvvals' attributes, FALSE to add actual
color to the vertices of the objels.
|
---|
Blob: | If specified used as the blob. If NULL, a 2-cross is used.
Blob must be of size one in each axis, probably centered
around the origin. Must be a list of 3 objects for blob
coloring methods other than "No color".
|
---|
BlobSpreadMethod: | Method of spreading the blobs.
|
---|
BlobColorMethod: | Method of coloring each blob.
|
---|
Resolution: | Resolution of created objects (n^2 objects are created).
|
---|
Negative: | Default (FALSE) is white blobs over dark background. If
TRUE, assume dark blobs over white background.
|
---|
Intensity: | The gray level affect on the blobs' scale.
|
---|
MinIntensity: | Minimum intensity allowed. Zero will collapse the blobl
completely in one direction which will render it
impossible to actually manufacture it.
|
---|
MergePolys: | TRUE to merge all objects' polygons into one object.
|
---|
Returned Value:
IPObjectStruct *: A list (poly if MergePolys) object of Resolution^2
spherical blobs.
|
---|
Keywords:
(imgshd3d.c:331)
Prototype:
IPObjectStruct *UserMake3DStatueFrom3Images(const char *Image1Name,
const char *Image2Name,
const char *Image3Name,
int DoTexture,
const IPObjectStruct *Blob,
User3DSpreadType BlobSpreadMethod,
UserImgShd3dBlobColorType
BlobColorMethod,
int Resolution,
int Negative,
IrtRType Intensity,
IrtRType MinIntensity,
int MergePolys)
Description:
Creates Resolution^2 3D cross blobs that looks like the 1st image
(gray level) from the XZ plane, like the 2nd image from the YZ plane, and
like the 3rd image from the XY plane.
A 3D cross is used as a blob.
Parameters:
Image1Name: | Name of 1st image to load.
|
---|
Image2Name: | Name of 2nd image to load.
|
---|
Image3Name: | Name of 3rd image to load.
|
---|
DoTexture: | TRUE to add 'uvvals' attributes, FALSE to add actual
color to the vertices of the objels.
|
---|
Blob: | If specified used as the blob. If NULL, a 3-cross is used.
Blob must be of size one in each axis, probably centered
around the origin. Should hold 3 polygons for "No color"
color method and should hold a list of 3 objects for
the other methods.
|
---|
BlobSpreadMethod: | Method of spreading the blobs.
|
---|
BlobColorMethod: | Method of coloring each blob.
|
---|
Resolution: | Resolution of created objects (n^2 objects are created).
|
---|
Negative: | Default (FALSE) is white blobs over dark background. If
TRUE, assume dark blobs over white background.
|
---|
Intensity: | The gray level affect on the blobs' scale.
|
---|
MinIntensity: | Minimum intensity allowed. Zero will collapse the blobl
completely in one direction which will render it
impossible to actually manufacture it.
|
---|
MergePolys: | TRUE to merge all objects' polygons into one object.
|
---|
Returned Value:
IPObjectStruct *: A list (poly if MergePolys) object of Resolution^2
spherical blobs.
|
---|
Keywords:
(srf_mrch.c:270)
Prototype:
IPPolygonStruct *UserMarchOnPolygons(const IPObjectStruct *PObj,
UserSrfMarchType MarchType,
const IPPolygonStruct *PlHead,
IPVertexStruct *VHead,
CagdRType Length)
Description:
Marches and create a polyline on the given polygonal mesh, of given
Length.
Mesh is assumed to have adjacency information, and normals and curvature
information at the vertices, if MarchType is SILHOUTETE or CURVATURE,
respectively. Further, the mesh is assumed to consist of triangles only,
and is regularized.
Parameters:
PObj: | This polygonal object we march on.
|
---|
MarchType: | Type of march - isoparametric, lines of curvature, etc.
|
---|
PlHead: | Polygon from the polygonal mesh with start at.
|
---|
VHead: | Starting vertex of the march. Must be on Pl.
|
---|
Length: | Length of March.
|
---|
Returned Value:
IPPolygonStruct *: A piecewise linear approximation of the march.
|
---|
See Also:
BoolGenAdjacencies
UserMarchOnSurface
Keywords:
(srf_mrch.c:73)
Prototype:
IPPolygonStruct *UserMarchOnSurface(UserSrfMarchType MarchType,
const CagdUVType UVOrig,
const CagdVType DirOrig,
const CagdSrfStruct *Srf,
const CagdSrfStruct *NSrf,
const CagdSrfStruct *DuSrf,
const CagdSrfStruct *DvSrf,
CagdRType Length,
CagdRType FineNess,
CagdBType ClosedInU,
CagdBType ClosedInV)
Description:
Marches and create a polyline on the surface of given Length.
NSrf, DuSrf, and DvSrf are computed locally if not provided which would
reduce the efficiency of a sequence of surface marching procedures, on the
same surface.
Parameters:
MarchType: | Type of march - isoparametric, lines of curvature, etc.
for USER_SRF_MARCH_PRIN_CRVTR type, it is assumed that
SymbEvalSrfCurvPrep was invoked on Srf before this function
is called for the proper preparations.
|
---|
UVOrig: | Origin on surface where the march starts.
|
---|
DirOrig: | Direction to march on surface (projected to tangent plane).
If, however, MarchType == SRF_MARCH_ISO_PARAM, Dir contains
the direction in the parametric, UV, space.
|
---|
Srf: | Surface to march on.
|
---|
NSrf: | Normal field of surface to march on (optional).
|
---|
DuSrf: | Partial with respect to u (optional).
|
---|
DvSrf: | Partial with respect to v (optional).
|
---|
Length: | Length of March.
|
---|
FineNess: | Number of estimated steps along the approximated march.
|
---|
ClosedInU: | TRUE if surface is closed in U direction, FALSE otherwise.
|
---|
ClosedInV: | TRUE if surface is closed in V direction, FALSE otherwise.
|
---|
Returned Value:
IPPolygonStruct *: A piecewise linear approximation of the march.
|
---|
See Also:
SymbEvalSrfCurvPrep
UserMarchOnPolygons
Keywords:
(micro1tile.c:897)
Prototype:
IPObjectStruct *UserMicro3DCrossTile(
const UserMicroTileBndryPrmStruct *UMinPrms,
const UserMicroTileBndryPrmStruct *UMaxPrms,
const UserMicroTileBndryPrmStruct *VMinPrms,
const UserMicroTileBndryPrmStruct *VMaxPrms,
const UserMicroTileBndryPrmStruct *WMinPrms,
const UserMicroTileBndryPrmStruct *WMaxPrms)
Description:
Constructs a 3D cross tile in the unit cube based on the given boundary
parameters. Resulting tile will consist of trivariates.
Parameters:
UMinPrms, UMaxPrms, VMinPrms, VMaxPrms, WMinPrms, WMaxPrms: | The
boundary parameters of the six faces of the tile.
|
---|
Returned Value:
IPObjectStruct *: Constructed tile or NULL if error.
|
---|
See Also:
UserMicroBifurcate1to2Tile
Keywords:
(micro2tile.c:459)
Prototype:
IPObjectStruct *UserMicroBifurcate1to2Tile(
const UserMicroTileBndryPrmStruct *WMinPrms,
const UserMicroTileBndryPrmStruct *WMax1Prms,
const UserMicroTileBndryPrmStruct *WMax2Prms,
CagdRType SeparationGap,
CagdRType SaddleSize,
CagdBType Trivars)
Description:
Constructs a 1 to 2 bifurcation tile in the unit cube based on the
given boundary parameters. Resulting tile will consist of trivariates.
Parameters:
WMinPrms: | Main, base bottom, boundary parameters.
|
---|
WMax1Prms, WMax2Prms: | plit, top, two boundary parameters.
|
---|
SeparationGap: | Between the two centers of the WMax1/2 boundaries.
|
---|
SaddleSize: | Approximately desired saddle gap. > 0.
|
---|
Trivars: | TRUE to generate trivariates, FALSE for surfaces.
|
---|
Returned Value:
IPObjectStruct *: Constructed tile or NULL if error.
|
---|
See Also:
UserMicro3DCrossTile
Keywords:
(micro3strct.c:496)
Prototype:
int UserMicroCloseTrimCurves(UserMicroTilePreprocessStruct *UserMicroData,
const CagdPType Min,
const CagdPType Max)
Description:
Closes all the open trim-curves on the boundaries of the tile.
Parameters:
UserMicroData: | Preprocessing data, contains open trim curves.
|
---|
Min: | Min bounds of the UV domain.
|
---|
Max: | Max bounds of the UV domain.
|
---|
Returned Value:
int: TRUE if successful, FALSE in case of error.
|
---|
Keywords:
(micro0strct.c:50)
Prototype:
void UserMicroComputeAffineTrans(const TrivTVStruct *TV,
CagdPType Par0,
CagdPType Par1,
CagdPType Par2,
IrtHmgnMatType MatXInv,
CagdRType VertScale,
IrtHmgnMatType Trans)
Description:
Computes an affine transform from R^3 to R^3 using four points in R^3
and their images under the transform.
Parameters:
TV: | Trivariate to obtain the four image points from.
|
---|
Par0: | Parameter for TV to obtain a point from.
|
---|
Par1: | Parameter for TV to obtain a point from.
|
---|
Par2: | Parameter for TV to obtain a point from.
|
---|
MatXInv: | Inverse of matrix formed from four source points in R^3.
|
---|
VertScale: | aling factor for the affine transform in vertical direction.
|
---|
Trans: | The computed affine transform. This is a return argument.
|
---|
Returned Value:
Keywords:
(micro0strct.c:262)
Prototype:
void UserMicroEvalAlphaCoeffs(const IPObjectStruct *TileGeom,
UserMicroTilePreprocessStruct *UserMicroData)
Description:
Computes the refinement matrices for trivariate tiles with split.
Parameters:
TileGeom: | Geometry of the tile to preprocess.
|
---|
UserMicroData: | Preprocessing data.
|
---|
Returned Value:
Keywords:
(micro2strct.c:4709)
Prototype:
CagdBType UserMicroFunctionalEvaluateEucl(UserMicro2TilingStructPtr Tiling,
const CagdRType *EuclideanPnt,
CagdRType *ResValue)
Description:
Computes the value of the tiling function for a given point in the
Euclidean space in a given multi-variate.
Parameters:
Tiling: | The tiling.
|
---|
EuclideanPnt: | he given point in Euclidean space.
each dimension in a single tile.
|
---|
ResValue: | utput parameter. The value of the tiling function at the
given point.
|
---|
Returned Value:
CagdBType: TRUE if successful, FALSE otherwise.
|
---|
Keywords:
(micro2strct.c:4748)
Prototype:
CagdBType UserMicroFunctionalEvaluateUV(UserMicro2TilingStructPtr Tiling,
const CagdRType *UVPnt,
CagdRType *ResValue)
Description:
Computes the value of the tiling function for a given point in the
parametric space in a given multi-variate.
Parameters:
Tiling: | The tiling.
|
---|
UVPnt: | The given point in parametric space, normalized to [0, 1]^n.
Each dimension in a single tile.
|
---|
ResValue: | utput parameter. The value of the tiling function at the
given point.
|
---|
Returned Value:
CagdBType: TRUE if successful, FALSE otherwise.
|
---|
Keywords:
(micro2strct.c:4945)
Prototype:
void UserMicroFunctionalFreeTiling(UserMicro2TilingStructPtr Tiling)
Description:
Deallocates a tiling structure.
Parameters:
Tiling: | he tiling to deallocate.
|
---|
Returned Value:
Keywords:
(micro2strct.c:2075)
Prototype:
UserMicro2TilingStructPtr UserMicroFunctionalRandomTiling(
const MvarMVStruct *DeformMV,
const int *NumCells,
const int *Orders,
const int *NumCPInTile,
CagdRType MinCPValue,
CagdRType MaxCPValue,
CagdRType Capping,
int CappingBits,
CagdBType IsC1,
CagdBType UseConnectivityGraph)
Description:
Creates a new random tiling structure.
Parameters:
DeformMV: | he deformation function.
|
---|
NumCells: | rray of size Dim, holds the number of tiles in each dimension.
|
---|
Orders: | Array of size Dim, holds the order of each B-spline
multivariate in each tile.
|
---|
NumCPInTile: | rray of size Dim, holds the number of control points in
each dimension in a single tile.
|
---|
MinCPValue: | inimal possible value of the control points.
|
---|
MaxCPValue: | aximal possible value of the control points.
|
---|
Capping: | Size of the tiling border.
|
---|
CappingBits: | itwise attributes of which sides to cap.
|
---|
IsC1: | If True the result is C^1 continuous, otherwise C^0.
|
---|
UseConnectivityGraph: | f TRUE, a connectivity graph algorithm is used
to ensure inter- and intra-cell connectivity of
the tiles.
|
---|
Returned Value:
UserMicro2TilingStructPtr: New random tiling structure.
|
---|
Keywords:
(micro2strct.c:4618)
Prototype:
UserMicro2TilingStructPtr UserMicroFunctionalTiling(
const MvarMVStruct *DeformMV,
const int *NumCells,
const int *Orders,
const int *NumCPInTile,
CagdRType MinCPValue,
CagdRType MaxCPValue,
CagdRType Capping,
int CappingBits,
CagdBType IsC1,
CagdBType UseConnectivityGraph,
UserMicroFunctionalTileCBFuncType CPValueFunc)
Description:
Creates a new tiling structure. The tiling behavior is controlled by a
given control points values function.
'
Parameters:
DeformMV: | he deformation function.
|
---|
NumCells: | rray of size Dim, holds the number of tiles in each dimension.
|
---|
Orders: | rray of size Dim, holds the order of each B-spline multivariate
in each tile.
|
---|
NumCPInTile: | rray of size Dim, holds the number of control points in
each dimension in a single tile.
|
---|
MinCPValue: | Minimal possible value of the control points.
|
---|
MaxCPValue: | Maximal possible value of the control points.
|
---|
Capping: | Size of the tiling border.
|
---|
CappingBits: | itwise attributes of which sides to cap.
|
---|
IsC1: | If True the result is C^1 continuous, otherwise C^0.
|
---|
UseConnectivityGraph: | nsure connectivity between tiles, and only one
component globally.
|
---|
CPValueFunc: | ontrol point values function.
|
---|
Returned Value:
UserMicro2TilingStructPtr: New tiling structure.
|
---|
Keywords:
(micro2strct.c:4808)
Prototype:
IPObjectStruct *UserMicroFunctionalTilingIsoSurface(
UserMicro2TilingStructPtr Tiling,
int SamplingFactor)
Description:
Computes the zero set of the tiling implicit function, applying the
marching cubes method for each multivariate in each tile.
If a deformation multivariate is provided, then the zero set of the
tiling is composed into it. If not provided (NULL) the tiling zero set is
returned as list of polygons.
Parameters:
Tiling: | he tiling.
|
---|
SamplingFactor: | he fineness of the returned polygons. Higher values
will result in a smoother result, but with larger size.
parametric space with the tiling.
|
---|
Returned Value:
IPObjectStruct *: List of polygons of the zero set of the tiling.
|
---|
Keywords:
(micro2strct.c:5003)
Prototype:
CagdRType UserMicroFunctionalTilingVolume(UserMicro2TilingStructPtr Tiling,
CagdRType CubeSize,
CagdBType PositiveVol)
Description:
Computes the volume enclosed inside/outside the zero set of the tiling.
The tiling domain is partitioned in each into a multidimensional grid,
composed of cubes. The volume is computed as the volume of the cubes
whose centers are inside/outside the zero set of the tiling.
Parameters:
Tiling: | he tiling.
|
---|
CubeSize: | he size of the edge of the grid's cube.
|
---|
PositiveVol: | f TRUE, the volume of the positive values domain of the
tiling is computed, otherwise the volume of the negative
values domain is computed.
|
---|
Returned Value:
Keywords:
(micro3strct.c:157)
Prototype:
IPObjectStruct *UserMicroGenShellCapForThisTile(
IPObjectStruct *TileGeom,
const int *TotalRepeats,
const int *TileIdxs,
int BndryBits,
int ShellCapBits,
UserMicroTilePreprocessStruct *UserMicroData)
Description:
Generate shelling/capping for current tile.
Parameters:
TileGeom: | Tile to generate shell for.
|
---|
TotalRepeats: | Repetitions along the different axes.
|
---|
TileIdxs: | The current repetition identifier along u, v, w axes.
|
---|
BndryBits: | Specifies where in the original domain, this Bezier
patch lies.
|
---|
ShellCapBits: | Specifies which side to apply shelling/capping to.
|
---|
UserMicroData: | Preprocessing data.
|
---|
Returned Value:
IPObjectStruct *: Shell/cap for this tile.
|
---|
Keywords:
(micro3strct.c:250)
Prototype:
void UserMicroGetBndryCrvs(const IPObjectStruct *TileGeom,
UserMicroTilePreprocessStruct *UserMicroData,
const CagdPType MinCoordVals,
const CagdPType MaxCoordVals)
Description:
Extract the trim curves of given tile.
Parameters:
TileGeom: | Geometry of the tile to extract trim curves from.
|
---|
UserMicroData: | Preprocessing data.
|
---|
MinCoordVals: | Min coordinate values for bounding box of tile.
|
---|
MaxCoordVals: | Max coordinate values for bounding box of tile.
|
---|
Returned Value:
Keywords:
(micro2strct.c:821)
Prototype:
int UserMicroIsInternalBoundaryCP(UserMicro2TilingStructPtr T,
const int *CPIndex)
Description:
Checks if a given control point lies on the boundary between tiles, and
returns an appropriate integer number based on the boundary type.
Parameters:
T: | A tiling.
|
---|
CPIndex: | he control point index.
|
---|
Returned Value:
int: 0 - if the given control point lies on the outer boundary of
whole tiling or if it is not shared between tiles.
1 - The control point is shared along a face on the x axis.
2 - The control point is shared along a face on the y axis.
3 - The control point is shared along a face on the z axis.
4 - The control point is shared along an edge on the x axis.
5 - The control point is shared along an edge on the y axis.
6 - The control point is shared along an edge on the z axis.
7 - The control point is shared on a corner.
|
---|
Keywords:
(micro_strct.c:305)
Prototype:
UserMicroTileStruct *UserMicroParseTileFromObj(IPObjectStruct *IPObject)
Description:
Parses the input object into a tile.
A tile can be any IRIT object including lists of objects but if the
input is a list object with the first object in the list a number, like:
(n, Obj1,..., Objn) N
which is used as:
1. If n = 3, Obj1 is used as the 1st tile along w, Obj2 is interior in w,
and Obj3 as last tile in w.
2. If n is general, it should match the number of requested element in w,
globally and Obji is used for the i'th w elements.
Parameters:
IPObject: | Input object to parse.
|
---|
Returned Value:
UserMicroTileStruct *: Parsed tile.
|
---|
Keywords:
(micro1strct.c:200)
Prototype:
void UserMicroPreprocessFractalTile(
const IPObjectStruct *TileGeom,
UserMicroTilePreprocessStruct *UserMicroData)
Description:
Preprocess trivariate tile for fractal-like tiling.
Parameters:
TileGeom: | Geometry of the tile to preprocess.
|
---|
UserMicroData: | Preprocessing data.
|
---|
Returned Value:
Keywords:
(micro0strct.c:96)
Prototype:
void UserMicroPreprocessG0DiscontTile(
const IPObjectStruct *TileGeom,
UserMicroTilePreprocessStruct *UserMicroData)
Description:
Preprocess trivariate tile with potential G0-discontinuities.
Parameters:
TileGeom: | Geometry of the tile to preprocess.
|
---|
UserMicroData: | Preprocessing data.
|
---|
Returned Value:
Keywords:
(micro2strct.c:4512)
Prototype:
UserMicro2TilingStructPtr UserMicroRandomBifurcationTiling(
const MvarMVStruct *DeformMV,
const int *Orders,
const int *NumCPInTile,
CagdRType SubdivTol,
CagdRType RandomFactor,
int CapBits,
CagdRType CappingValue)
Description:
Builds a implicit random bifurcation tiling (without composition).
Parameters:
DeformMV: | he deformation multivariate.
|
---|
Orders: | Array of size DeformMV -> Dim, holds the order of each
B-spline multivariate in each tile.
|
---|
NumCPInTile: | rray of size DeformMV -> Dim, holds the number of control
points in each dimension in a single tile.
|
---|
SubdivTol: | ubdivision threshold.
|
---|
RandomFactor: | andomization factor [0,1]. Defines a blending between
a canonical predefined tile and a random tile.
|
---|
CapBits: | apping options.
|
---|
CappingValue: | apping value. The value for the control points on the
domain boundary.
|
---|
Returned Value:
UserMicro2TilingStructPtr: A tiling structure.
|
---|
Keywords:
(micro_strct.c:363)
Prototype:
UserMicroTileStruct *UserMicroReadTileFromFile(const char *FileName,
int Messages,
int MoreMessages)
Description:
Reads a tile from a file.
Parameters:
FileName: | To read the file from.
|
---|
Messages: | Do we want error messages?
|
---|
MoreMessages: | Do we want informative messages?
|
---|
Returned Value:
UserMicroTileStruct *: Tile read from the file.
|
---|
Keywords:
(micro2strct.c:4549)
Prototype:
IPObjectStruct *UserMicroRegularBifurcationTiling(
const UserMicroParamStruct *Param)
Description:
Builds a regular bifurcation tiling with composition into a deformation
map.
Parameters:
Param: | The micro structure synthesis parameters (deformation function,
tile, tolerances, etc.
|
---|
Returned Value:
IPObjectStruct *: A tiling structure.
|
---|
Keywords:
(micro_strct.c:1218)
Prototype:
void UserMicroSetUniqueGeomIDs(IPObjectStruct *DefObj, int *UniqueGeomID)
Description:
Updates all leaves in the given deformed object with unique IDs.
Parameters:
DefObj: | Object (a single tile typically) to update all its leaves
with a unique ID.
|
---|
UniqueGeomID: | Reference to the unique geometry ID counter.
|
---|
Returned Value:
Keywords:
(micro_slicer.c:835)
Prototype:
TrivTVStruct *UserMicroSlicerCreateAll(const UserMicroSlicerInfoStruct *Slicer)
Description:
recursively create the all microstructure trivariates.
Parameters:
Returned Value:
TrivTVStruct *: The trivariates created.
|
---|
See Also:
Keywords:
(micro_slicer.c:779)
Prototype:
void UserMicroSlicerFree(UserMicroSlicerInfoStruct *Slicer)
Description:
Free a slicer.
Parameters:
Returned Value:
See Also:
Keywords:
(micro_slicer.c:996)
Prototype:
CagdSrfStruct *UserMicroSlicerGetBoundarySrfsFromTV(const TrivTVStruct *Trivar)
Description:
Get the 6 bounding surfaces of a trivariate.
Parameters:
Returned Value:
CagdSrfStruct *: The trivariate bounding surfaces.
|
---|
See Also:
Keywords:
(micro_slicer.c:900)
Prototype:
IPPolygonStruct *UserMicroSlicerGetOutline(UserMicroSlicerInfoStruct *Slicer,
CagdRType z)
Description:
Get the outline of the current slice (at the given z).
Parameters:
Slicer: | The slicer.
|
---|
z: | The slice z level.
|
---|
Returned Value:
IPPolygonStruct *: The outline.
|
---|
See Also:
Keywords:
(micro_slicer.c:701)
Prototype:
UserMicroSlicerInfoStruct *UserMicroSlicerInit(
const UserMicroParamStruct *MSParam,
int Levels)
Description:
Initialize a micro struct slicer.
Parameters:
MSParam: | Default microstructure parameters to use.
|
---|
Levels: | The number of levels in the microstructure.
|
---|
Returned Value:
UserMicroSlicerInfoStruct *: The slicer handle.
|
---|
See Also:
Keywords:
(micro_slicer.c:755)
Prototype:
void UserMicroSlicerSetLevel(UserMicroSlicerInfoStruct *Slicer,
const UserMicroParamStruct *MSParam,
int Level)
Description:
set the micro structure parameter at a particular level (0 based).
Parameters:
Slicer: | The slicer.
|
---|
MSParam: | The microstructure parameters to use.
|
---|
Level: | The level to update.
|
---|
Returned Value:
See Also:
Keywords:
(micro_slicer.c:810)
Prototype:
void UserMicroSlicerSetTolerances(UserMicroSlicerInfoStruct *Slicer,
CagdRType NumericTol,
CagdRType SubdivTol,
CagdRType TraceTol,
CagdRType SlopeTol)
Description:
Set the slicer tolerances.
Parameters:
Slicer: | The slicer.
|
---|
NumericTol: | The numeric tolerance of the slicer.
|
---|
SubdivTol: | The subdivision tolerance of the slicer.
|
---|
TraceTol: | The tracing tolerance of the slicer.
|
---|
SlopeTol: | The minimal polyline angle (radians) between line segments.
|
---|
Returned Value:
See Also:
Keywords:
(micro3strct.c:432)
Prototype:
void UserMicroStitchBndryCrvs(UserMicroTilePreprocessStruct *UserMicroData)
Description:
Stitches the boundary curves of the tile.
Parameters:
UserMicroData: | Preprocessing data.
|
---|
Returned Value:
Keywords:
(micro_strct.c:2636)
Prototype:
IPObjectStruct *UserMicroStructComposition(UserMicroParamStruct *Param)
Description:
The unified interface for creating micro structures which may be regular,
random or functional.
Parameters:
Param: | Input parameters (See struct definition).
|
---|
Returned Value:
IPObjectStruct *: The deformed tiling.
|
---|
See Also:
UserMicroStructComposition2
Keywords:
(micro_strct.c:2704)
Prototype:
IPObjectStruct *UserMicroStructComposition2(UserMicroParamStruct *Param,
const IPObjectStruct *DeformMVs)
Description:
The unified interface for creating micro structures which may be
regular, random or functional.
Parameters:
Param: | Input parameters (See struct definition).
|
---|
DeformMVs: | A hierarchy of deformation maps in which case, the
micro structures are constructed for them all.
|
---|
Returned Value:
IPObjectStruct *: The deformed tilings over all deformation MVs.
|
---|
See Also:
UserMicroStructComposition
Keywords:
(micro_strct.c:2811)
Prototype:
void UserMicroStructParamFree(UserMicroParamStruct *MSParam, int FreeSelf)
Description:
Frees the given structure of MSParam.
Parameters:
MSParam: | Structure to free. It is freed as well, if FreeSelf.
|
---|
FreeSelf: | TRUE to also free the memory associated with Param.
|
---|
Returned Value:
See Also:
UserMicroParamStruct
Keywords:
(micro_strct.c:229)
Prototype:
UserMicroTileStruct *UserMicroTileCopy(const UserMicroTileStruct *Tile)
Description:
Creates a copy of a tile.
Parameters:
Returned Value:
UserMicroTileStruct *: Newly created copy.
|
---|
Keywords:
(micro_strct.c:261)
Prototype:
UserMicroTileStruct *UserMicroTileCopyList(const UserMicroTileStruct *Tile)
Description:
Creates a copy of a list of tiles.
Parameters:
Tile: | The list of tiles to copy.
|
---|
Returned Value:
UserMicroTileStruct *: Newly created copy.
|
---|
Keywords:
(micro4strct.c:310)
Prototype:
IPObjectStruct **UserMicroTileFindNeighbors(const IPObjectStruct *Tile,
const IPObjectStruct *TileList,
const MvarMVStruct *DeformMV,
const CagdBType *DeformMVPeriodic,
IPObjectStruct **Neighbors)
Description:
Find six neighbor tiles of the given tile, Tile, in a 3D deformation
(a trivariate) deformMV.
Parameters:
Tile: | The query tile to search neighbors.
|
---|
TileList: | A list of tiles to search neighbors of Tile.
|
---|
DeformMV: | Deformation map of macro shape.
|
---|
DeformMVPeriodic: | eriodicity of the deformation map. A vector in the
dimension of DeformMV.
|
---|
Neighbors: | A pointer to a vector of six neighbor tile
In otehr wordes, the Neighboring tiles adjacent to
Tile, in TIleList, in (order of)
UMin, UMax, VMin, VMax, WMin, WMax of Tile.
|
---|
Returned Value:
IPObjectStruct **: A pointer to a vector of (up to) six neighbor tiles.
tiles adjacent to Tile in (order in) TileList in dir
UMin, UMax, VMin, VMax, WMin, WMax of Tiles.
Note some of the six neighbors might be NULL if on
the boundary.
Returns input Neighbors vector, or NULL if error.
|
---|
Keywords:
(micro_strct.c:170)
Prototype:
void UserMicroTileFree(UserMicroTileStruct *Tile)
Description:
Frees a tile.
Parameters:
Returned Value:
Keywords:
(micro_strct.c:199)
Prototype:
void UserMicroTileFreeList(UserMicroTileStruct *Tile)
Description:
Frees a list of tiles.
Parameters:
Tile: | The tile list to free.
|
---|
Returned Value:
Keywords:
(micro_strct.c:143)
Prototype:
UserMicroTileStruct *UserMicroTileNew(IPObjectStruct *Geom)
Description:
Allocates memory for a tile.
Parameters:
Geom: | Geometry for the tile, used in place. Assumed in [0,1]^3.
|
---|
Returned Value:
UserMicroTileStruct *: The allocated tile.
|
---|
Keywords:
(micro_strct.c:476)
Prototype:
UserMicroTileStruct *UserMicroTileTransform(const UserMicroTileStruct *Tile,
IrtHmgnMatType Mat)
Description:
Transforms a tile according to the transformation matrix.
Parameters:
Tile: | The tile to transform.
|
---|
Mat: | The transformation matrix.
|
---|
Returned Value:
UserMicroTileStruct *: Transformed tile.
|
---|
Keywords:
(micro4tile.c:225)
Prototype:
IPObjectStruct *UserMicroZSpringTile(int SpringOrder,
const CagdRType *SpringParams,
const CagdRType *BotTopCrossWidth,
CagdRType BotTopCrossHeight)
Description:
Constructs a 3D spring in Z tile in the unit cube based on the given
parameters. Resulting tile will consist of trivariates.
Parameters:
SpringOrder: | The order of the spring can be 2 or 3 for linear or round
spring edges, respectively.
|
---|
SpringParams: | triplet of (SpringWidth, SpringTrans, SpringScale).
The SpringWidth is the thickness of the vertical springs.
SpringTrans and SpringScale control the extend and scale
of the middle zone of the springs.
|
---|
BotTopCrossWidth: | f positive, width of the four cross bottom/top cross
arms in (UMin, UMax, VMin, VMax).
Zero or negative to disable.
|
---|
BotTopCrossHeight: | f positive, height of the bottom/top cross to add.
Zero or negative to disable.
|
---|
Returned Value:
IPObjectStruct *: Constructed tile or NULL if error.
|
---|
See Also:
UserMicroBifurcate1to2Tile
UserMicro3DCrossTile
Keywords:
(userpick.c:38)
Prototype:
IrtRType UserMinDistLineBBox(const IrtPtType LinePos,
const IrtVecType LineDir,
const IrtBboxType BBox)
Description:
Computes the closest distance between a 3-space line and a bounding
box.
Parameters:
LinePos: | Point on the 3-space line.
|
---|
LineDir: | Direction of the 3-space line.
|
---|
BBox: | Bounding box, parallel to main planes.
|
---|
Returned Value:
IrtRType: Minimal distance between the line and the bbox.
|
---|
See Also:
UserMinDistLinePolylineList
UserMinDistLinePolygonList
Keywords:
(userpick.c:209)
Prototype:
IrtRType UserMinDistLinePolygonList(const IrtPtType LinePos,
const IrtVecType LineDir,
IPPolygonStruct *Pls,
IPPolygonStruct **MinPl,
IrtPtType MinPt,
IrtRType *HitDepth,
IrtRType *IndexFrac)
Description:
Compute the closest distance between a line in three space and a list
of polygons. The polygons are assumed to be convex.
Parameters:
LinePos: | Point on the 3-space line.
|
---|
LineDir: | Direction of the 3-space line.
|
---|
Pls: | List of polygons.
|
---|
MinPl: | Will be set to the closest polyline.
|
---|
MinPt: | Will be set to the closest point.
|
---|
HitDepth: | If a direct hit (zero distance is returned), the depth of
the hit is returned here, as the value of parameter t in
LinePos + t * LineDir.
|
---|
IndexFrac: | Will be set to the index of the closest point, starting from
zero. Index of 3.5 means the closest is in the mid point
from point 3 to point 4. This value should be ignored for
a direct hit (return value equal zero).
Valid for one polygon in input.
|
---|
Returned Value:
IrtRType: Minimal distance from the 3-space line to the polygons.
In case of a direct hit, zero is returned.
|
---|
See Also:
UserMinDistLineBBox
UserMinDistLinePolylineList
Keywords:
(userpick.c:279)
Prototype:
IrtRType UserMinDistLinePolylineList(const IrtPtType LinePos,
const IrtVecType LineDir,
IPPolygonStruct *Pls,
int PolyClosed,
IPPolygonStruct **MinPl,
IrtPtType MinPt,
IrtRType *HitDepth,
IrtRType *IndexFrac)
Description:
Compute the closest distance between a line in three space and a list
of polyline.
Parameters:
LinePos: | Point on the 3-space line.
|
---|
LineDir: | Direction of the 3-space line.
|
---|
Pls: | List of polylines.
|
---|
PolyClosed: | RUE if polyline is a closed polygon, FALSE otherwise.
|
---|
MinPl: | Will be set to the closest polyline.
|
---|
MinPt: | Will be set to the closest point.
|
---|
HitDepth: | If a hit, the depth of the hit is returned here, as the
value of parameter t in LinePos + t * LineDir.
|
---|
IndexFrac: | Will be set to the index of the closest point, starting from
zero. Index of 3.5 means the closest is in the mid point
from point 3 to point 4. Valid for one polyline in input.
|
---|
Returned Value:
IrtRType: Minimal distance from the 3-space line to the polylines.
|
---|
See Also:
UserMinDistLineBBox
UserMinDistLinePolygonList
UserMinDistPointPolylineList
Keywords:
(userpick.c:400)
Prototype:
IrtRType UserMinDistPointPolylineList(const IrtPtType Pt,
IPPolygonStruct *Pls,
IPPolygonStruct **MinPl,
IPVertexStruct **MinV,
int *Index)
Description:
Compute the closest distance between a point in three space and list of
polys. Only vertices in the polylines are considered.
Parameters:
Pt: | Point in 3-space.
|
---|
Pls: | List of polylines.
|
---|
MinPl: | Will be set to the closest poly.
|
---|
MinV: | Will be set to the closest vertex.
|
---|
Index: | Will be set to the index of the closest vertex, starting
from zero.
|
---|
Returned Value:
IrtRType: Minimal distance from the 3-space point to the polys.
|
---|
See Also:
UserMinDistLineBBox
UserMinDistLinePolygonList
GMDistPolyPt
GMDistPolyPt2
Keywords:
(visible.c:1040)
Prototype:
TrimSrfStruct *UserMoldReliefAngle2Srf(const CagdSrfStruct *Srf,
const CagdVType VDir,
CagdRType Theta,
int MoreThanTheta,
CagdRType SubdivTol)
Description:
Compute and trim regions in Srf that have normals with angular deviation
of more (less) than Theta Degrees from the prescribed direction VDir.
Computation is based on extractions of Isoclines of Srf from VDir.
Parameters:
Srf: | Surface to examine its normals' angular deviation.
|
---|
VDir: | View direction vector.
|
---|
Theta: | Angular deviation to examine, in degrees, in range (0, 90).
|
---|
MoreThanTheta: | TRUE to seek regions of more than theta degrees normal
deviation from VDir, FALSE for less than.
|
---|
SubdivTol: | ubdivision tolerance of freeforms silhouette approx.
|
---|
Returned Value:
TrimSrfStruct *: List of trimmed surfaces' regions of regions of Srf
that present angular deviations of less (more) than
Theta to VDir.
|
---|
See Also:
SymbSrfIsocline
UserMoldRuledRelief2Srf
Keywords:
(visible.c:1104)
Prototype:
CagdSrfStruct *UserMoldRuledRelief2Srf(const CagdSrfStruct *Srf,
const CagdVType VDir,
CagdRType Theta,
CagdRType SubdivTol)
Description:
Compute and add ruled surfaces at all trimmed relief angles' boundaries.
Computation is based on extractions of Isoclines of Srf from VDir.
Parameters:
Srf: | Surface to examine its normals' angular deviation.
|
---|
VDir: | View direction vector.
|
---|
Theta: | Angular deviation to examine, in degrees, in range (0, 90).
|
---|
SubdivTol: | ubdivision tolerance of freeforms silhouette approx.
|
---|
Returned Value:
CagdSrfStruct *: List of ruled surfaces that tangently extends from
the computed isoclines at the prescribed VDir/Theta.
|
---|
See Also:
SymbSrfIsocline
UserMoldReliefAngle2Srf
Keywords:
(nc_tpath.c:175)
Prototype:
IPObjectStruct *UserNCContourToolPath(const IPObjectStruct *PObj,
IrtRType Offset,
IrtRType ZBaseLevel,
IrtRType TPathSpace,
UserNCGCodeUnitType Units)
Description:
Computes tool path to 3-axis machine from +Z direction the given
geometry (Polygonal meshes/surfaces). Assumes a ball end tool. Stages:
1. Tessellate the model into polygons.
2. Verify the existence of (or create approximation thereof) of normal at
the vertices of the polygons, & offset all polygons by desired offset.
3. For each Y-section, contour the model at the desired Y-constant level
and compute the upper envelop of all contoured line segments as this
Y-constant level as one toolpath.
4. Emit the toolpath flipping every second Y-constant path to create a
zigzag motion, and move the tool path down by offset amount so it will
be referencing the ball-end tool's bottom.
Parameters:
PObj: | Object to process and create 3-axis machining tool path for.
|
---|
Offset: | Tool radius to offset the geometry in PObj with.
|
---|
ZBaseLevel: | Bottom level to machine. Created tool path will never be
below this level.
|
---|
TPathSpace: | Space between adjacent paths. Also used as a tolerance
bound.
|
---|
Units: | Millimeters or inches.
|
---|
Returned Value:
IPObjectStruct *: List of constant X polylines, in zigzag motion, that
covers PObj from above (offseted by Offset).
|
---|
See Also:
UserNCPocketToolPath
Keywords:
(nc_tpath.c:994)
Prototype:
IPObjectStruct *UserNCPocketToolPath(const IPObjectStruct *PObj,
IrtRType ToolRadius,
IrtRType RoughOffset,
IrtRType TPathSpace,
IrtRType TPathJoin,
UserNCGCodeUnitType Units,
int TrimSelfInters)
Description:
Computes tool path to 2D pocket machining from +Z direction the given
geometry (curves/polylines). Geometry is assumed to be closed, possibly
with closed islands. Stages:
1. Offset the shape in for roughing, by RoughOffset (+ToolRadius) amount.
2. Compute the contour lines (intersection of parallel lines) with the
offseted-in geometry.
3. Merge all contour lines into one large toolpath. Toolpath is sorted so
adjacent paths are close within tool diameter, as much as possible to
minimize retractions.
4. Add a final, finish, path, at ToolRadius offset from the shape.
Parameters:
PObj: | Object to process and create pocket machining tool path for.
|
---|
ToolRadius: | Tool radius to offset the geometry in PObj with.
|
---|
RoughOffset: | ffset amount to use in the roughing stage.
|
---|
TPathSpace: | Space between adjacent parallel cut rows. If zero returns
just the offset geometry.
|
---|
TPathJoin: | maximal distance between end points of tpath to join. <
|
---|
Units: | Milimeters or inches.
|
---|
TrimSelfInters: | TRUE to try and trim self intersections.
|
---|
Returned Value:
IPObjectStruct *: List of constant X polylines, in zigzag motion, that
covers PObj from above (offseted by Offset).
|
---|
See Also:
UserNCContourToolPath
Keywords:
(tilepack.c:118)
Prototype:
struct UserTilePackInfoStruct *UserPackTileCreateTileObject(
const IPObjectStruct *TileObj,
const int *StepsMin,
const int *StepsMax,
int Dim)
Description:
Creates a tile object to be used in order to tile the domain from an
already existing tile represented as an IPObjectStruct.
This object have to be freed using the UserPackTileFreeTileObject
function.
Parameters:
TileObj: | A pointer to a tile represented as an IPObjectStruct.
Tile can optionally have the tiling translation vectors, as
"vec1", "vec2", and "vec3", defaulting to X, Y, Z if none.
Tile can be also a list object of tiles in which case each
element in list must have tile position attribute as
"TileBndryType" - interior tile or one of the Min/Max U/V/W
boundaries (See UserPackTileBndryType). An interior tile
will be used instead of missing other tile(s).
|
---|
StepsMin, StepsMax: | Optional explicit number of steps, in vec1/2/3.
Can be NULL, in which case, covering steps for the given
domain, will be estimated.
|
---|
Dim: | Dimension of tile - 2 or 3.
|
---|
Returned Value:
struct UserTilePackInfoStruct *: The object representing a tile for
the tiling procedure - UserPackTilesInDomain, or NULL if error.
|
---|
See Also:
UserPackTilesInDomain
UserPackTileFreeTileObject
Keywords:
(tilepack.c:343)
Prototype:
void UserPackTileFreeTileObject(struct UserTilePackInfoStruct *Tile)
Description:
Frees a tile object created using UserPackTileCreateTileObject.
Parameters:
Tile: | pointer to a tile represented as an UserTilePackInfoStruct.
|
---|
Returned Value:
See Also:
UserPackTileCreateTileObject
UserPackTilesInDomain
Keywords:
(tilepack.c:388)
Prototype:
IPObjectStruct *UserPackTilesInDomain(UserTilePackInfoStruct *PackTileInfo,
const GMBBBboxStruct *TilingDomain,
int TileInclusion,
CagdRType SkewFactor)
Description:
Tiles a domain periodically.
Parameters:
PackTileInfo: | A pointer to the tile to use for periodically tiling the
domain. The tile object also defines the directions to
to translate, during the tiling, via "veci" attributes.
Will be updated with the number of steps in veci.
|
---|
TilingDomain: | A pointer to the bounding box of the to be tiled domain.
|
---|
TileInclusion: | 0 to exclude all tiles intersecting the domain boundary
or outside.
1 to include tiles that are partially outside domain.
2 to assume tile is [0, 1]^k and include all [0,1]^k
that are in the domain.
3 do not clipping whatsoever.
|
---|
SkewFactor: | Optional skewing factor, relevant only if tile has skew
direction attribute.
|
---|
Returned Value:
IPObjectStruct *: A pointer to all tiles oacked in the tiled domain.
|
---|
See Also:
UserPackTileCreateTileObject
UserPackTileFreeTileObject
Keywords:
(patch_access.c:754)
Prototype:
void UserPatchAccessFree(UserPatchAccessInfoStruct *Patches)
Description:
Frees the structure used for patch accessibility calculations.
Parameters:
Patches: | The Patches accessibility structure.
|
---|
Returned Value:
See Also:
Keywords:
(patch_access.c:902)
Prototype:
int UserPatchAccessGetNumOfPatches(const UserPatchAccessInfoStruct *Patches)
Description:
Get the number of patches.
Parameters:
Patches: | The Patch access structure.
|
---|
Returned Value:
See Also:
Keywords:
(patch_access.c:857)
Prototype:
int UserPatchAccessGetNumOfSrfs(const UserPatchAccessInfoStruct *Patches)
Description:
Get the number of surfaces.
Parameters:
Patches: | The Patch access structure.
|
---|
Returned Value:
See Also:
Keywords:
(patch_access.c:950)
Prototype:
void UserPatchAccessGetPatchData(const UserPatchAccessInfoStruct *Patches,
int PatchId,
UserPatchAccessPatchDataStruct *Data)
Description:
Get a the accessibility information data for a patch, given its ID.
Parameters:
Patches: | The Patch access structure.
|
---|
PatchId: | The ID of the patch.
|
---|
Data: | The patch data returned.
|
---|
Returned Value:
See Also:
Keywords:
(patch_access.c:925)
Prototype:
int UserPatchAccessGetPatchVisible(const UserPatchAccessInfoStruct *Patches,
int PatchId)
Description:
Find out if a patch is visible from the current direction.
Parameters:
Patches: | The Patch access structure.
|
---|
PatchId: | The id of the patch.
|
---|
Returned Value:
int: Non-zero for visible patches.
|
---|
See Also:
Keywords:
(patch_access.c:881)
Prototype:
const CagdSrfStruct *UserPatchAccessGetSrf(const UserPatchAccessInfoStruct
*Patches,
int SrfId)
Description:
Get the surface with the given id.
Parameters:
Patches: | The Patch access structure.
|
---|
SrfId: | The surface id.
|
---|
Returned Value:
const CagdSrfStruct *: The surface.
|
---|
See Also:
Keywords:
(patch_access.c:670)
Prototype:
UserPatchAccessInfoStruct *UserPatchAccessPrep(
CagdSrfStruct **const Srfs,
const UserPatchAccessSrfParamsStruct *SrfParams,
int SrfNum)
Description:
Prepares the structure used for patch accessibility calculations.
Parameters:
Srfs: | The Surfaces.
|
---|
SrfParams: | The size and cone paramters used to adaptively
subdivide the surfaces to patches.
|
---|
SrfNum: | The number of surfaces.
|
---|
Returned Value:
UserPatchAccessInfoStruct *: The patch accessibility struct.
|
---|
See Also:
Keywords:
(patch_access.c:818)
Prototype:
void UserPatchAccessSetDir(UserPatchAccessInfoStruct *Patches,
const IrtRType *Dir,
IrtRType AccessAngle,
IrtRType ExtraRadius)
Description:
Sets the current direction information for the patch access structure.
This function also performs the accessibility test from this direction.
Parameters:
Patches: | The Patch access structure.
|
---|
Dir: | The 'up' direction (the view direction is the opposite).
|
---|
AccessAngle: | An extra slack Angle (maintaining visibility with small,
up to Angle deviation around Dir).
|
---|
ExtraRadius: | Additional translational slack, treating the Dir vector
as a cylinder of ExtraRadius radius.
|
---|
Returned Value:
See Also:
Keywords:
(patch_access.c:1011)
Prototype:
void UserPatchAccessSetPatchTest(const UserPatchAccessInfoStruct *Patches,
int PatchId,
int SrfId,
int Test)
Description:
Set whether or not a patch should be tested for accessibility.
Unset patches will always be defined as inaccessible following the next
accessibility test, using PatchAccessSetDir.
Parameters:
Patches: | The Patch access structure.
|
---|
PatchId: | The ID of the patch (USER_PATCH_ACCESS_ALL for all).
|
---|
SrfId: | The surface ID of the patches (USER_PATCH_ACCESS_ALL for all).
|
---|
Test: | The test value to set.
|
---|
Returned Value:
See Also:
Keywords:
(circpack.c:378)
Prototype:
CagdCrvStruct *UserPkPackCircles(CagdCrvStruct *Bndry,
CagdRType Radius,
int NumIter,
CagdRType NumericTol,
CagdRType SubdivTol)
Description:
Computes a dense packing of circles of given radius inside a container
specified by its boundary.
Parameters:
Bndry: | The curve specifying the boundary of the container.
|
---|
Radius: | The radius of the circles.
|
---|
NumIter: | The number of iterations to run.
|
---|
NumericTol: | Numeric tolerance of the numeric stage. The numeric
stage is employed only if NumericTol < SubdivTol.
|
---|
SubdivTol: | Tolerance of the subdivision process. Tolerance is
measured in the parametric space of the multivariates.
|
---|
Returned Value:
CagdCrvStruct *: List of circles in B-spline form.
|
---|
Keywords:
(usrcnvrt.c:70)
Prototype:
CagdCrvStruct *UserPolyline2LinBsplineCrv(const IPPolygonStruct *Poly,
CagdBType FilterDups)
Description:
Returns a linear B-spline curve constructed from given polyline.
Parameters:
Poly: | To convert to a linear B-spline curve.
|
---|
FilterDups: | f TRUE, filters out duplicates points, in polygon, in
place.
|
---|
Returned Value:
CagdCrvStruct *: A linear Bspline curve representing Poly.
|
---|
See Also:
CagdCnvrtPolyline2LinBspCrv
UserPolylines2LinBsplineCrvs
Keywords:
linear curves
conversion
(usrcnvrt.c:34)
Prototype:
CagdCrvStruct *UserPolylines2LinBsplineCrvs(const IPPolygonStruct *Polys,
CagdBType FilterDups)
Description:
Returns a list of linear Bspline curves constructed from given polylines.
Parameters:
Polys: | To convert to linear bspline curves.
|
---|
FilterDups: | f TRUE, filters out duplicates points in polygon, in
place.
|
---|
Returned Value:
CagdCrvStruct *: Linear Bspline curves representing Poly.
|
---|
See Also:
CagdCnvrtPolyline2LinBspCrv
UserPolyline2LinBsplineCrv
Keywords:
linear curves
conversion
(puzzle3d.c:2103)
Prototype:
IPObjectStruct *UserPuz3DComposeTileOverModel(
const IPObjectStruct *InputTile,
const GMBBBboxStruct *TileBBox,
const MdlModelStruct *Mdl,
const CagdVType PolyApproxInfo,
const CagdRType *BoolTols,
CagdRType MergeStitchedTrimmedTiles)
Description:
Computes a tiling, following Tiler, of all surfaces in Mdl.
Parameters:
InputTile: | Tile to use. Can be a list of tiles for specific
boundary cases. See UserPackTileCreateTileObject for more.
May be overwritten for individual trimmed surface, via
a "TileBndryType" attribute on that trimmed surface.
|
---|
TileBBox: | The Bounding box of the tile.
|
---|
Mdl: | The model to tile as a 3D puzzle.
Surfaces in Mdl can have "Steps" string attributes
that sets the desired min/max steps of tiling the srf,
as (MinU, MinV, MinW, MaxU, MaxV, MaxW), all integers.
|
---|
PolyApproxInfo: | Information on how to handle the tiles, if the output
is not supposed to be the outline curve - a list of
number values as,
Thickness - How thick to make the puzzle pieces. zero
to leave as outline curve, positive to set the
thickness, -1 to convert to polygons but leave
zero thickness, -2 to convert to trimmed surface (also
zero thickness).
PlTolerance - If the tile is approximated into polygons
use this tolerance in the approximation.
ExtensionScale - Control over the surface extension scale.
|
---|
BoolTols: | Optional Boolean tolerances. See UserCrvs2DBooleans.
Can be NULL to use the defaults.
A vector of (ProjectOnPlane, EndPtEndPtTol, PlanarityTol).
|
---|
MergeStitchedTrimmedTiles: | Positive to merge stitched trimmed tiles
into one poly object(sets the relative stitched edge to
size of tiles). Otherwise, no merge is performed.
|
---|
Returned Value:
IPObjectStruct *: A list of 3D puzzle tiles, assmbled into the model
Mdl.
|
---|
See Also:
UserPuz3DComposeTileOverSrf
Keywords:
(puzzle3d.c:2316)
Prototype:
IPObjectStruct *UserPuz3DComposeTileOverSrf(const IPObjectStruct *InputTile,
const GMBBBboxStruct *TileBBox,
CagdSrfStruct **Srf,
CagdBType MapTo3D,
const CagdVType PolyApproxInfo,
IrtRType *TileXYZScale)
Description:
Computes a tiling, following Tiler, of all surfaces in Mdl.
Parameters:
InputTile: | Tile to use. Can be a list of tiles for specific
boundary cases. See UserPackTileCreateTileObject for more.
|
---|
TileBBox: | The Bounding box of the tile.
|
---|
Srf: | The surface to tile as a 3D puzzle.
joints in the tiles that are out of the param. domain.
Srf can have "Steps" string attributes that sets
the desired min/max steps of tiling the srf, as
(MinU, MinV, MinW, MaxU, MaxV, MaxW), all integers.
or optionally additional 3 float parameters
(StepU, StepV, StepW), 9 parameters in all.
If attribute "Steps" is "AllTiles", then InputTile is
assumed to hold the full set of tiles for the entire
domain but normalized to domain [0, 1]^2.
|
---|
MapTo3D: | TRUE to compose the tiles into 3D, FALSE to leave in the
2D parametric domain of Srf.
|
---|
PolyApproxInfo: | Information on how to handle the tiles, if the output
is not supposed to be the outline curve - a list of
number values as,
Thickness - How thick to make the puzzle pieces. zero
to leave as outline curve, positive to set the
thickness, -1 to convert to polygons but leave
zero thickness, -2 to convert to trimmed surface (also
zero thickness).
PlTolerance - If the tile is approximated into polygons
use this tolerance in the approximation.
ExtensionScale - Control over the surface extension scale.
|
---|
TileXYZScale: | f not NULL, will be set with the XYZ scales applied to
the tile.
|
---|
Returned Value:
IPObjectStruct *: A list of 3D puzzle tiles, assmbled into the model
Mdl.
|
---|
See Also:
UserPuz3DComposeTileOverModel
Keywords:
(puzzle3d.c:2439)
Prototype:
IPObjectStruct *UserPuz3DTest(IPObjectStruct *PObj,
const int *StepsMin,
const int *StepsMax,
CagdVType PolyApproxInfo)
Description:
Debugging routine for this puzzles-in-3D module.
Parameters:
PObj: | The surface or model to tile its surfaces with puzzle tiles.
Surfaces in Mdl can have "Steps" string attributes that
sets the desired grid size of puzzle tiles.
|
---|
StepsMin, StepsMax: | The min/max tiling steps desired.
|
---|
PolyApproxInfo: | Information on how to handle the tiles, if the output
is not supposed to be the outline curve - a list of
number values as,
Thickness - How thick to make the puzzle pieces. zero
to leave as outline curve, positive to set the
thickness, -1 to convert to polygons but leave
zero thickness, -2 to convert to trimmed surface (also
zero thickness).
PlTolerance - If the tile is approximated into polygons
use this tolerance in the approximation.
ExtensionScale - Control over the surface extension scale.
|
---|
Returned Value:
IPObjectStruct *: The created puzzle.
|
---|
See Also:
Keywords:
(register.c:610)
Prototype:
IrtRType UserRegisterPointSetSrf(int n,
IrtPtType *PtsSet,
const CagdSrfStruct *Srf,
IrtRType AlphaConverge,
IrtRType Tolerance,
UserRegisterTestConverganceFuncType
RegisterTestConvergance,
IrtHmgnMatType RegMat)
Description:
Given a set of points, that is a rigid transformation of a given surface
find a transformation that takes the set of points to the surface.
A local greedy approach is taken here that guarantee local minimum and
hence it is assumed the two sets are pretty close and similar.
Corrections by marching on the surface are conducted on the fly.
Parameters:
n: | Number of points in PtsSet1.
|
---|
PtsSet: | The vector of points of first set. Might be changed in
place.
|
---|
Srf: | A surface the points set is on upto rigid motion.
|
---|
AlphaConverge: | onvergance factor between almost zero (slow and stable)
and one (fast but unstable).
|
---|
Tolerance: | Tolerance termination condition, in L infinity sense.
|
---|
RegisterTestConvergance: | A call back function to check for the
convergance of this iterative process.
|
---|
RegMat: | Computed transformation.
|
---|
Returned Value:
IrtRType: Maximal error as the maximal distance between two
corresponding points, or IRIT_INFNTY if failed to converge.
|
---|
See Also:
UserRegisterTestConvergance
Keywords:
(register.c:259)
Prototype:
int UserRegisterTestConvergance(IrtRType Dist, int i)
Description:
A default test convergance function for UserRegisterTwoPointSets.
Parameters:
Dist: | The current distance between the two points sets.
|
---|
i: | The index of the current iteration, starting with zero.
|
---|
Returned Value:
int: TRUE if should quit (accuracy is good enough), FALSE otherwise.
|
---|
See Also:
UserRegisterTwoPointSets
Keywords:
(register.c:568)
Prototype:
int UserRegisterTestSrfConvergance(IrtRType Dist, int i)
Description:
A test convergance function for UserRegisterTwoPointSets for surface -
point-set registration.
Parameters:
Dist: | The current distance between the two points sets.
|
---|
i: | The index of the current iteration, starting with zero.
|
---|
Returned Value:
int: TRUE if should quit (accuracy is good enough), FALSE otherwise.
|
---|
See Also:
UserRegisterTwoPointSets
UserRegisterTestConvergance
Keywords:
(register.c:306)
Prototype:
IrtRType UserRegisterTwoPointSets(int n1,
IrtPtType *PtsSet1,
int n2,
IrtPtType *PtsSet2,
IrtRType AlphaConverge,
IrtRType Tolerance,
UserRegisterTestConverganceFuncType
RegisterTestConvergance,
IrtHmgnMatType RegMat)
Description:
Given two sets of points, one is a rigid transformation of the other,
find a transformation that takes the first set of points to the second.
A local greedy approach is taken here that guarantee local minimum and
hence it is assumed the two sets are pretty close and similar.
No assumption is made as to the order of the points in the set.
However, and while the two sets need not have the same number of points,
the optimal solution is achieved at zero distance when each point in one
set is at a corresponding point location of the second set.
Parameters:
n1: | Number of points in PtsSet1.
|
---|
PtsSet1: | The vector of points of first set. Might be changed in
place.
|
---|
n2: | Number of points in PtsSet2.
|
---|
PtsSet2: | The vector of points in second set. Might be changed in
place.
|
---|
AlphaConverge: | onvergance factor between almost zero (slow and stable)
and one (fast but unstable).
|
---|
Tolerance: | Tolerance termination condition, in L infinity sense.
|
---|
RegisterTestConvergance: | A call back function to check for the
convergance of this iterative process.
|
---|
RegMat: | Computed transformation.
|
---|
Returned Value:
IrtRType: Error of match between the two corresponding point sets.
|
---|
See Also:
UserRegisterTestConvergance
Keywords:
(rckt_fuel.c:240)
Prototype:
IPObjectStruct *UserRocketFuelDesign3D(
const TrivTVStruct *FuelTV,
int NumLayers,
const int NumElements[2],
int SliceThrough,
int BndrySrfs,
const CagdRType *ApplyRGB,
UserRocketFuelThrustProfileFuncType ThrustProfileFunc,
UserRocketFuelEvalLclFuelThrustFuncType EvalLclFuelThrustFunc,
UserRocketFuelAccelerantRatioFuncType AccelerantRatioFunc,
UserRocketFuelDeformElementFuncType DeformElementFunc,
UserRocketFuelElementCBFuncType ElementCBFunc,
void *CBData)
Description:
This functions build a 3D fuel of heterogeneous materials, from a given
global trivariate shape with front from WMin to WMax. Assumes the
following set of query functions:
1. Thrust(w) - The desired Thrust at time w.
2. BasicFuelThrust(LclFrontArea, GlblFrontArea) - The provided thrust by
element LclFrontArea, knowing the entire front GlblFrontArea.
3 AccelerantRatio(Boost) - Given the desired boost over the the basic
burning rate of BasicFuelThrust, as a number >1 or <1 if retardants are
required, returns the amount of accelerant (Boost > 1) or returdants
(Boost < 1) to add, as a relative blend with the regular fuel.
And also given:
1. A 2D cross section to revolve into rocket fuel basic stock, CrossSecion.
2. Number of layers and number of elements (in x and y) in each layer to
use in the approximation.
Algorithm:
1. For i = 0, step 1, to n layers do
// Global current front required thrust;
b. ExpectedThrust[i] := Thrust(t0 + i * dt);
c. MinLayerDepth[i] := minimum depth of this i'th layer;
// Compute the expected basic (no accelerant/retardant)
// thrust from this layer.
d. FrontBasicThrust := 0;
2. For i = 0, step 1, to n layers do
a. For each micro-element (tile) in this i'th layer do
i. Layer1Boost := local i'th element front required boost;
i. Layer2Boost := local i'th element back required boost;
ii. DepthElmnt := depth of local i'th element;
iii. Derive the boost required at the eight corners of the
micro-element based on the DepthElmnt / MinLayerDepth[i] ratio
and Layer1/2Boost at the front/back of the micro-element.
iv. Add AccelerantRatio (C function UserRocketAddAccelerant) based
on information in 3.a.iii.
Parameters:
FuelTV: | A volume to design the fuel for. The burning in assumed
starting from Wmin to Wmax.
|
---|
NumLayers: | How many layers to divide into as time progresses.
|
---|
NumElements: | How many element to place in each layer as (Nx, Ny).
|
---|
SliceThrough: | TRUE to remove a slice out of the fuel to see interior.
|
---|
BndrySrfs: | TRUE to returns the boundary surfaces of the fuel,
FALSE returns the full set of trivariates.
|
---|
ApplyRGB: | Add RGB coloring following the heterogeneous materials,
If not zero. If positive, use this value as a maximum
acceleration/retardant color.
|
---|
ThrustProfileFunc: | Function to determine the needed/required thrust,
at this time, t in [0, 1]. If NULL, a constant 1 thrust
is used.
|
---|
EvalLclFuelThrustFunc: | unction to return what is the expected thrust
by the given small surface patch (a micro-element)
If NULL, relative area ratio is used.
|
---|
AccelerantRatioFunc: | Function to determine the amount of accelerant/
retardant to add at this location, given the
thrust boost that is expected in this location.
If NULL, the identity map is used.
|
---|
DeformElementFunc: | Option function to deform the tile, based on its
needed boost. NULL to disable.
|
---|
ElementCBFunc: | Optional function to be invoked on each element.
|
---|
CBData: | Optional data to pass to the call back functions.
|
---|
Returned Value:
IPObjectStruct *: Synthesized heterogeneous geometry. Either as a
list of trivariates or a list of boundary surfaces.
|
---|
See Also:
Keywords:
(rldmatch.c:480)
Prototype:
CagdSrfStruct *UserRuledSrfFit(const CagdSrfStruct *Srf,
CagdSrfDirType RulingDir,
CagdRType ExtndDmn,
int Samples,
CagdRType *Error,
CagdRType *MaxError)
Description:
Fit a ruled surface to the given general surface Srf. The best fit is
found using a dynamic programming search over all possibly rulings, while
each ruling line's distance is measured against the surface.
Parameters:
Srf: | To fit a ruled surface through.
|
---|
RulingDir: | Either the U or the V direction. This is used only to
sample Srf and construct the possibly ruling lines.
|
---|
ExtndDmn: | Amount to extended the selected sampled boundary curves.
Zero will not extend and match the ruling from the original
boundary to its maximum. Not supported.
|
---|
Samples: | Number of samples to compute the dynamic programming with.
Typically in the hundreds. Must be greater than two.
|
---|
Error: | The computed error, following the distance between the
rulings and the original surface, Srf. In L2 sense.
|
---|
MaxError: | maximum error detected in L-infinity sense.
|
---|
Returned Value:
CagdSrfStruct *: The fitted ruled surface, or NULL if error.
|
---|
See Also:
Keywords:
(dmn_ccvr.c:216)
Prototype:
CagdCrvStruct *UserSCvrCoverSrf(const CagdCrvStruct *DomainBndry,
CagdCrvStruct *CovrCrv,
CagdRType CoverEps,
CagdRType NumericTol,
CagdRType SubdivTol,
int TopK,
CagdRType TopEps,
CagdRType IntrpBlndRatio)
Description:
Given a convex domain in E2, this function returns a random curve which
covers the domain upto the specified tolerance.
Parameters:
DomainBndry: | The closed curve which specifies the boundary of the
convex input domain.
|
---|
CovrCrv: | Initial covering curve.
|
---|
CoverEps: | The tolerance value upto which the domain is to be
covered.
|
---|
NumericTol: | Numeric tolerance of the numeric stage. The numeric
stage is employed only if NumericTol < SubdivTol.
|
---|
SubdivTol: | Tolerance of the subdivision process. Tolerance is
measured in the parametric space of the multivariates.
|
---|
TopK: | Specifies how many points to add to the covering curve
in every iteration of the covering algorithm.
|
---|
TopEps: | Specifies the distance threshold. In every iteration of
the covering algorithm, all points which are at a distance
farther than TopEps are added to the covering curve. This
is used only if TopK is < 0.
|
---|
IntrpBlndRatio: | he blend ratio for approximation and interpolation. A
value of 1.0 will imply interpolation and 0.0 will imply
imply approximation. A negative value implies
approximation with ability to introduce more than one
point between a pair of consecutive control points of
the current covering curve while refining it.
|
---|
Returned Value:
CagdCrvStruct *: The covering curve.
|
---|
See Also:
Keywords:
cover surface
(user_ftl.c:29)
Prototype:
UserSetErrorFuncType UserSetFatalErrorFunc(UserSetErrorFuncType ErrorFunc)
Description:
Sets the error function to be used by User_lib.
Parameters:
ErrorFunc: | New error function to use.
|
---|
Returned Value:
UserSetErrorFuncType: Old error function reference.
|
---|
Keywords:
error handling
(srf_cntr.c:756)
Prototype:
void UserSnapInterCrvs2Bndry(CagdCrvStruct *Crvs,
CagdRType UMin,
CagdRType UMax,
CagdRType VMin,
CagdRType VMax)
Description:
Snaps the end points of the given curves to lay on the boundary if they
are not closed.
Parameters:
Crvs: | To snap to boundary, in place.
|
---|
UMin, UMax, VMin, VMax: | The boundary
|
---|
Returned Value:
See Also:
Keywords:
(sphere_pack.c:3115)
Prototype:
void UserSpkPolyObjBorderDelete(UserSpkBorderStructPtr Border)
Description:
Deletes a Polygonal Object Border object.
Parameters:
Returned Value:
Keywords:
(sphere_pack.c:3012)
Prototype:
UserSpkBorderStructPtr UserSpkPolyObjBorderNew(const IPObjectStruct *PObj,
IrtRType GridCellSize,
IrtRType MaxSphereRadius)
Description:
Creates a new Polygonal Object Border object.
Parameters:
PObj: | Polygonal Object to use
(Can be safely deleted after this function returns).
|
---|
GridCellSize: | Linear size (width/height/depth) of a grid cell.
|
---|
MaxSphereRadius: | aximum sphere radius this border will be used with.
|
---|
Returned Value:
UserSpkBorderStructPtr: Newly created Polygonal Object Border object.
|
---|
Keywords:
(sphere_pack.c:2580)
Prototype:
void UserSpkSolvingProcessDelete(UserSpkSolvingProcessStructPtr Process)
Description:
Deletes a Solving Process object.
Parameters:
Process: | olving Process object.
|
---|
Returned Value:
Keywords:
(sphere_pack.c:2528)
Prototype:
UserSpkSolvingProcessStructPtr UserSpkSolvingProcessFork(
UserSpkSolvingProcessStructPtr Parent)
Description:
Forks a Solving Process object into a new one.
The two processes can be used independently in different threads.
Parameters:
Parent: | Parent process to fork.
|
---|
Returned Value:
UserSpkSolvingProcessStructPtr: Handle for the newly created Solving
Process object.
|
---|
Keywords:
(sphere_pack.c:2486)
Prototype:
UserSpkSolvingProcessStructPtr UserSpkSolvingProcessNew(
const UserSpkSolvingSettingsStruct *Settings,
UserSpkBorderStructPtr Border,
UserSpkSolvingStatus *Status)
Description:
Creates a new Solving Process object.
Parameters:
Settings: | Solving settings.
|
---|
Border: | Border to fill with spheres.
|
---|
Status: | (OUT) Status of the solving process after initialization.
|
---|
Returned Value:
UserSpkSolvingProcessStructPtr: Handle for the newly created Solving
Process object.
|
---|
Keywords:
(sphere_pack.c:2642)
Prototype:
void UserSpkSolvingProcessRunGravityAttempt(
UserSpkSolvingProcessStructPtr Process,
UserSpkSolvingStatus *Status)
Description:
Runs a Gravity algorithm attempt.
Parameters:
Process: | olving Process object.
|
---|
Status: | (OUT) Status of the solving process after the attempt.
|
---|
Returned Value:
Keywords:
(sphere_pack.c:2604)
Prototype:
void UserSpkSolvingProcessRunRepulsionsAttempt(
UserSpkSolvingProcessStructPtr Process,
UserSpkSolvingStatus *Status)
Description:
Runs a Random Repulsion algorithm attempt.
Parameters:
Process: | olving Process object.
|
---|
Status: | (OUT) Status of the solving process after the attempt.
|
---|
Returned Value:
Keywords:
(sphere_pack.c:2445)
Prototype:
UserSpkSolvingSettingsStruct UserSpkSolvingSettingsGetDefault(
IrtRType SphereRadius)
Description:
Generates default solving settings.
Parameters:
SphereRadius: | phere radius.
|
---|
Returned Value:
UserSpkSolvingSettingsStruct: Default solving settings.
|
---|
Keywords:
(sphere_pack.c:3196)
Prototype:
void UserSpkSurfObjBorderDelete(UserSpkBorderStructPtr Border)
Description:
Deletes a Surface Object Border object.
Parameters:
Returned Value:
Keywords:
(sphere_pack.c:3142)
Prototype:
UserSpkBorderStructPtr UserSpkSurfObjBorderNew(const IPObjectStruct *PObj,
IrtRType SubdivTol,
IrtRType NumerTol)
Description:
Creates a new Surface Object Border object.
Parameters:
PObj: | Polygonal Object to use.
|
---|
SubdivTol: | Subdivision tolerance.
|
---|
NumerTol: | Numerical tolerance.
|
---|
Returned Value:
UserSpkBorderStructPtr: Newly created Surface Object Border object.
|
---|
Keywords:
(srfcrvtr.c:209)
Prototype:
IPObjectStruct *UserSrfFixedCurvatureLines(const CagdSrfStruct *Srf,
CagdRType k1,
CagdRType Step,
CagdRType SubdivTol,
CagdRType NumericTol,
int Euclidean)
Description:
Computes all locations (typically curves) on input surface Srf that have
one principle curvature value equal to a fixed value k1.
Because k1 k2 = K and ((k1 + k2)/2)^2 = H^2,
we have ((k1 + K / k1)/2)^2 - H^2 = 0.
Both K and H^2 are rational so let K = KN / KD (numerator / denominator)
and similarly let H^2 = HN / HD.
Then, we need to solve for the zeros of
(k1 / 2 + KN / (KD * k1 * 2))^2 - HN / HD = 0, or the zeros of
(K1 * KD * k1 + KN)^2 * HD - HN * (KD * k1 * 2)^2 = 0.
Parameters:
Srf: | To compute lines of one principle curvature equal to k1.
|
---|
k1: | The prescribed principle curvature.
|
---|
Step: | Step size for curve tracing.
|
---|
SubdivTol: | The subdivision tolerance to use.
|
---|
NumericTol: | he numerical tolerance to use.
|
---|
Euclidean: | TRUE to return curvature lines curves in Euclidean space,
FALSE in parameter space.
|
---|
Returned Value:
IPObjectStruct *: A list of piecewise linear curves in Srf where one
principle curvature is equal to k1.
|
---|
See Also:
SymbSrfGaussCurvature
SymbSrfMeanCurvatureSqr
Keywords:
curvature
(ff_krnl.c:51)
Prototype:
IPObjectStruct *UserSrfKernel(const CagdSrfStruct *Srf,
CagdRType SubdivTol,
int SkipRate)
Description:
Computes the kernel of a freeform closed C^1 continuous surface.
The parabolic curves are computed and surface tangent planes swept along
these parabolic curves clip the volume, resulting with the kernel.
Parameters:
Srf: | To compute its kernel.
|
---|
SubdivTol: | Accuracy of subdivision approximation. 0.01 is a good start.
|
---|
SkipRate: | Step size over the parabolic points, 1 to process them all.
|
---|
Returned Value:
IPObjectStruct *: A polyhedra approximating the kernel, or NULL if
empty set.
|
---|
See Also:
SymbSrfGaussCurvature
UserCntrSrfWithPlane
Keywords:
(ff_krnl.c:251)
Prototype:
IPObjectStruct *UserSrfParabolicLines(const CagdSrfStruct *Srf,
CagdRType Step,
CagdRType SubdivTol,
CagdRType NumericTol,
int Euclidean,
int DecompSrfs)
Description:
Computes the parabolic lines of the given surface, if any.
Parameters:
Srf: | A surface to derive its parabolic lines.
|
---|
Step: | Step size for curve tracing.
|
---|
SubdivTol: | The subdivision tolerance to use.
|
---|
NumericTol: | The numerical tolerance to use.
|
---|
Euclidean: | TRUE to evaluate the parabolic lines into Euclidean space.
Ignored if DecompSrfs is TRUE.
|
---|
DecompSrfs: | TRUE to decompose the given Srf into convex/concave and
saddle regions.
|
---|
Returned Value:
IPObjectStruct *: Parabolic lines of Srf as a list of polylines
approximation, or NULL if none.
|
---|
See Also:
SymbSrfGaussCurvature
UserSrfparabolicSheets
Keywords:
(ff_krnl.c:422)
Prototype:
IPObjectStruct *UserSrfParabolicSheets(const CagdSrfStruct *Srf,
CagdRType Step,
CagdRType SubdivTol,
CagdRType NumericTol,
CagdRType SheetExtent)
Description:
Computes the parabolic lines of the given surface, if any.
Parameters:
Srf: | A surface to derive its parabolic lines.
|
---|
Step: | Step size for curve tracing.
|
---|
SubdivTol: | The subdivision tolerance to use.
|
---|
NumericTol: | The numerical tolerance to use.
|
---|
SheetExtent: | mount to extent the sheet from the parabolic lines.
|
---|
Returned Value:
IPObjectStruct *: Parabolic lines of Srf as a list of polylines
approximation, or NULL if none.
|
---|
See Also:
SymbSrfGaussCurvature
UserSrfparabolicLines
Keywords:
(srf_ssi.c:75)
Prototype:
int UserSrfSrfInter(const CagdSrfStruct *CSrf1,
const CagdSrfStruct *CSrf2,
int Euclidean,
CagdRType Eps,
int AlignSrfs,
CagdCrvStruct **Crvs1,
CagdCrvStruct **Crvs2)
Description:
Computes the intersection curves, if any, of the two given surfaces.
Parameters:
CSrf1, CSrf2: | wo surfaces to compute their intersection points.
|
---|
Euclidean: | TRUE for curves in Euclidean space, FALSE for pairs of
curves in parametric space.
|
---|
Eps: | Accuracy of computation. Currently measured in the
parametric domain of the surfaces.
|
---|
AlignSrfs: | If non zero surface are aligned by rotation so that
bounding boxes are axes parallel to increase chances of
no overlap. If AlignSrfs > 1, stretching is also applied
to the surfaces to try and make them orthogonal.
|
---|
Crvs1: | Intersection curves of the first surface.
If Euclidean is TRUE the 3-space curves are returned.
If Euclidean is FALSE, curves are returned in UV space.
|
---|
Crvs2: | Intersection curves of the second surface.
|
---|
Returned Value:
int: TRUE if found intersection, FALSE otherwise.
|
---|
See Also:
CagdCrvCrvInter
Keywords:
(visible.c:346)
Prototype:
IPPolygonStruct *UserSrfTopoAspectGraph(CagdSrfStruct *PSrf,
CagdRType SubdivTol)
Description:
Computes the views on the unit sphere at which the number of silhouette
curves is changing. This is a subset of the events typically considered
in aspect graphs and, for example, events such as silhouette cusps are not
considered.
The viewing directions where the number of silhouette curves/loops can
be modified are views in the tangent plane of the surface at parabolic
points of the surfaces, viewed from the zero principal curvatures'
direction.
Hence, we simply derive the parabolic lines of the surface and then
remap them to the direction of the zero principal curvature there.
Parameters:
PSrf: | To compute the aspect graph's topology partitioning for.
|
---|
SubdivTol: | Accuracy of parabolic piecewise linear approximation.
|
---|
Returned Value:
IPPolygonStruct *: Polylines on the unit sphere, depicting the aspect
graph's partitioning lines.
|
---|
See Also:
SymbSrfGaussCurvature
UserCntrSrfWithPlane
MvarSrfSilhInflections
Keywords:
(srfcrvtr.c:48)
Prototype:
MvarPtStruct *UserSrfUmbilicalPts(const CagdSrfStruct *Srf,
CagdRType SubTol,
CagdRType NumTol)
Description:
Computes the umbilical points of a given surface.
The umbilicals are computed as the zeros of the function C = H^2 - K.
C is never negative and hence we actually solve for dC/du = dC/dv = 0 and
test the values of C there.
Hence (We only consider numerator of C which is sufficient for zeros),
C = H^2 - K = (2FM - EN - GL)^2 - 4(LN - M^2)(EG - F^2).
Parameters:
Srf: | Surface to compute its umbilical points, if any.
|
---|
SubTol: | Subdivision tolerance of computation.
|
---|
NumTol: | Numerical tolerance of computation.
|
---|
Returned Value:
MvarPtStruct *: A list of UV parameters of umbilical points, or NULL
if none.
|
---|
See Also:
SymbSrfFff
SymbSrfSff
SymbSrfMeanCurvatureSqr
SymbSrfGaussCurvature
MvarMVsZeros
Keywords:
curvature
(visible.c:57)
Prototype:
IPObjectStruct *UserSrfVisibConeDecomp(const CagdSrfStruct *Srf,
CagdRType Resolution,
CagdRType ConeAngle)
Description:
Computes a decomposition of surface Srf into regions that are visible
with normals deviating in a cone of size as set via ConeAngle.
Parameters:
Srf: | To decompose into visibility cones.
|
---|
Resolution: | Of polygonal approximation of surface Srf.
|
---|
ConeAngle: | Of coverage over the unit sphere. ConeAngle prescribes the
opening angle of the cone. In Radians.
|
---|
Returned Value:
IPObjectStruct *: A list of trimmed surface regions of surface Srf that
are visible from a selected direction (available as
"VIewDir" attribute on them) ad that the union of the
list covers the entire surface Srf.
|
---|
See Also:
UserViewingConeSrfDomains
UserVisibilityClassify
Keywords:
(toolswep.c:2152)
Prototype:
int UserSweepSectionDone(UserSwpGenInfoStruct *GI)
Description:
Terminates the sweep section module.
Parameters:
GI: | General information of sweep sec. module, to free.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
Keywords:
(toolswep.c:375)
Prototype:
UserSwpGenInfoStruct *UserSweepSectionInit(const IrtRType ToolOrigin[3])
Description:
Initializes the Sweep section computation.
Parameters:
ToolOrigin: | The point labelled as the origin of the tool. The
Position part of motion specifies the new position of the
ToolCentroid.
|
---|
Returned Value:
UserSwpGenInfoStruct *: Allocated dynamically general handle of the
sweep sec. module.
|
---|
See Also:
UserSweepSectionDone
Keywords:
(toolswep.c:623)
Prototype:
void UserSwpSecCnstrctToolCone(UserSwpGenInfoStruct *GI,
IrtRType Center[3],
IrtRType MajorRadius,
IrtRType MinorRadius,
IrtRType Height)
Description:
Adds a conical shape to the tool.
Parameters:
GI: | Allocated dynamically general handle of the sweep sec. module.
|
---|
Center: | The center of the cone.
|
---|
MajorRadius: | The major radius of the cone.
|
---|
MinorRadius: | The minor radius of the cone.
|
---|
Height: | The height of the cone.
|
---|
Returned Value:
See Also:
UserSwpSecCnstrctToolGnrl
UserSwpSecCnstrctToolSph
UserSwpSecCnstrctToolCyl
Keywords:
(toolswep.c:494)
Prototype:
void UserSwpSecCnstrctToolCyl(UserSwpGenInfoStruct *GI,
IrtRType Center[3],
IrtRType Radius,
IrtRType Height)
Description:
Adds a cylindrical shape to the tool.
Parameters:
GI: | Allocated dynamically general handle of the sweep sec. module.
|
---|
Center: | The center of the cylinder.
|
---|
Radius: | The radius of the cylinder.
|
---|
Height: | The height of the cylinder.
|
---|
Returned Value:
See Also:
UserSwpSecCnstrctToolGnrl
UserSwpSecCnstrctToolSph
UserSwpSecCnstrctToolCone
Keywords:
(toolswep.c:697)
Prototype:
void UserSwpSecCnstrctToolGnrl(UserSwpGenInfoStruct *GI,
const CagdCrvStruct *Profile)
Description:
Adds a general surface of revolution to the tool.
Parameters:
GI: | Allocated dynamically general handle of the sweep sec. module.
|
---|
Profile: | The profile to be revolved, given in XZ-plane.
|
---|
Returned Value:
See Also:
UserSwpSecCnstrctToolCyl
UserSwpSecCnstrctToolSph
UserSwpSecCnstrctToolCone
Keywords:
(toolswep.c:421)
Prototype:
void UserSwpSecCnstrctToolSph(UserSwpGenInfoStruct *GI,
IrtRType Center[3],
IrtRType Radius)
Description:
Adds a spherical shape to the tool.
Parameters:
GI: | Allocated dynamically general handle of the sweep sec. module.
|
---|
Center: | The center of the sphere.
|
---|
Radius: | The radius of the sphere.
|
---|
Returned Value:
See Also:
UserSwpSecCnstrctToolGnrl
UserSwpSecCnstrctToolCyl
UserSwpSecCnstrctToolCone
Keywords:
(toolswep.c:798)
Prototype:
void UserSwpSecElimRedundantToolShapes(UserSwpGenInfoStruct *GI)
Description:
Eliminates redundant shapes from the definition of the tool.
Parameters:
GI: | Allocated dynamically general handle of the sweep sec. module.
|
---|
Returned Value:
See Also:
UserSwpSecCnstrctToolCyl
UserSwpSecCnstrctToolSph
UserSwpSecCnstrctToolCone
UserSwpSecCnstrctToolGnrl
Keywords:
(toolswep.c:1571)
Prototype:
CagdBType UserSwpSecGetLineEnvelope(UserSwpGenInfoStruct *GI,
int PlnNrmlDir1,
IrtRType PlnValue1,
int PlnNrmlDir2,
IrtRType PlnValue2,
CagdPtStruct **EnvlPts,
CagdPtStruct **Nrmls)
Description:
Computes the intersection of the envelope of the tool with the given
line, given as intersection of two hyperplanes. Assumes that the last
motion applied to the tool was a cut.
Parameters:
GI: | Allocated dynamically general handle of the sweep sec. module.
|
---|
PlnNrmlDir1: | The direction of normal to the first plane, 0 for X, 1
for Y and 2 for Z.
|
---|
PlnValue1: | The intercept value of the plane along PlnNrmlDir1.
|
---|
PlnNrmlDir2: | The direction of normal to the second plane, 0 for X, 1
for Y and 2 for Z.
|
---|
PlnValue2: | The intercept value of the plane along PlnNrmlDir2.
|
---|
EnvlPts: | Intersection as a list of points.
|
---|
Nrmls: | Normals to envelope as a list of points.
|
---|
Returned Value:
CagdBType: TRUE is successful FALSE otherwise.
|
---|
See Also:
UserSwpSecGetPlaneEnvelope
UserSwpSecGetSrfEnvelope
Keywords:
(toolswep.c:1287)
Prototype:
CagdBType UserSwpSecGetPlaneEnvelope(UserSwpGenInfoStruct *GI,
int PlnNrmlDir,
IrtRType PlnValue,
CagdPolylineStruct **PlnEnvl,
CagdPolylineStruct **Nrmls)
Description:
Computes the intersection of the envelope of the tool with the given
hyperplane. Assumes that the last motion applied to the tool was a
cut.
Parameters:
GI: | Allocated dynamically general handle of the sweep sec. module.
|
---|
PlnNrmlDir: | The direction of normal to the plane, 0 for X, 1 for Y
and 2 for Z.
|
---|
PlnValue: | The intercept value of the plane along PlnNrmlDir.
|
---|
PlnEnvl: | Intersection curve as a list of polylines.
|
---|
Nrmls: | Normals to envelope as a list of polylines.
|
---|
Returned Value:
CagdBType: TRUE is successful FALSE otherwise.
|
---|
See Also:
UserSwpSecGetFlatPlaneEnvelope
UserSwpSecGetSrfEnvelope
Keywords:
(toolswep.c:1707)
Prototype:
IPObjectStruct *UserSwpSecGetSrfEnvelope(UserSwpGenInfoStruct *GI)
Description:
Computes the envelope surface of the tool as a 2-manifold by involving
2D constraint solver.
Parameters:
GI: | Allocated dynamically general handle of the sweep sec. module.
|
---|
Returned Value:
IPObjectStruct *: Envelope surface as a list of triangles.
|
---|
See Also:
UserSwpSecGetPlaneEnvelope
UserSwpSecGetLineEnvelope
Keywords:
(toolswep.c:1937)
Prototype:
IPPolygonStruct *UserSwpSecMachiningSimulation(
const CagdCrvStruct *ToolProfile,
const CagdPType ToolOrigin,
const IPObjectStruct *MotionData,
int DexelGridType,
const CagdPType GridOrigin,
const CagdPType GridEnd,
int NumDexel0,
int NumDexel1,
const CagdSrfStruct *StockSrf,
CagdRType RectStockTopLevel,
CagdRType RectStockBtmLevel,
const char *OutputSavePath)
Description:
Performs 5-axis CNC machining simulation on given stock, using the given
tool and motion. Stock is specified by a set of closed surfaces, or a
rectangular stock of given dimensions. The dexel grid representing the
stock is specified too. The tool is specified by its profile which is
rotated about the z-axis to obtain the tool. The SLERP motion is given
in a text file as a list of position, orientation, one on each line. The
final stock after machining is returned as a list of triangles.
Parameters:
ToolProfile: | Rotate about z-axis to obtain the tool.
|
---|
ToolOrigin: | Coordinates of the tool center.
|
---|
MotionData: | List of List of 6 reals, viz. positions and
orientations of the tool, or filename.
|
---|
DexelGridType: | 0,1 or 2 for dexels along x,y or z axis.
|
---|
GridOrigin: | Two coordinates specifying the start of grid.
|
---|
GridEnd: | Two coordinates specifying the end of grid.
|
---|
NumDexel0: | Number of dexels along first grid direction.
|
---|
NumDexel1: | Number of dexels along second grid direction.
|
---|
StockSrf: | Closed surface specifying the stock.
|
---|
RectStockTopLevel: | op height value for rectangular stock, used if
StockSrf is NULL.
|
---|
RectStockBtmLevel: | ottom height value for rectangular stock, used if
StockSrf is NULL.
|
---|
OutputSavePath: | Prefix of path where to save intermediate stocks. Can
be empty string.
|
---|
Returned Value:
IPPolygonStruct *: Triangulated machined stock.
|
---|
See Also:
UserSweepSectionInit
Keywords:
(toolswep.c:2107)
Prototype:
IPObjectStruct *UserSwpSecRenderTool(UserSwpGenInfoStruct *GI)
Description:
Returns all the surfaces of the tool, as an object.
Parameters:
GI: | Allocated dynamically general handle of the sweep sec. module.
|
---|
Returned Value:
IPObjectStruct *: The tool's geometry.
|
---|
See Also:
Keywords:
(toolswep.c:1003)
Prototype:
int UserSwpSecToolCut(UserSwpGenInfoStruct *GI,
IrtRType Position[3],
IrtRType Orientation[3])
Description:
Sweeps the tool to new position and orientation, thereby cutting
material from the block. This motion leads to the envelope.
Parameters:
GI: | Allocated dynamically general handle of the sweep sec. module.
|
---|
Position: | New position to move tool to.
|
---|
Orientation: | ew orientation of the tool.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserSwpSecToolMove
Keywords:
(toolswep.c:915)
Prototype:
int UserSwpSecToolMove(UserSwpGenInfoStruct *GI,
IrtRType Position[3],
IrtRType Orientation[3])
Description:
Moves the tool to new position and orientation without doing any
envelope computation.
Parameters:
GI: | Allocated dynamically general handle of the sweep sec. module.
|
---|
Position: | New position to move tool to.
|
---|
Orientation: | ew orientation of the tool.
|
---|
Returned Value:
int: TRUE if successful, FALSE otherwise.
|
---|
See Also:
UserSwpSecToolCut
Keywords:
(tv0jacob.c:43)
Prototype:
IPObjectStruct *UserTVZeroJacobian(const TrivTVStruct *TV,
CagdBType Euclidean,
int SkipRate,
const CagdRType Fineness[3])
Description:
Computes a piecewise linear polygonal approximation to the zeros of the
Jacobian of the given trivariate function.
Parameters:
TV: | Trivariate to derives its zero jacobian.
|
---|
Euclidean: | TRUE to evaluate into Euclidean space, FALSE to return
the polygonal approximation in the parametric space of TV.
|
---|
SkipRate: | Of data in the volume. 1 skips nothing, 2 every second,
etc.
|
---|
Fineness: | Of trivariate global refinment level, 0 for no ref.
|
---|
Returned Value:
IPObjectStruct *: The approximation of the zeros of the Jacobian, in
all three axes.
|
---|
See Also:
UserTrivarZeros
Keywords:
(font2d.c:94)
Prototype:
IPObjectStruct *UserText2OutlineCurves2D(const char *Str,
IrtRType Space,
IrtRType ScaleFactor,
IrtRType *Height)
Description:
Generate Geometry represents a given text in Str, with Spacing
space between character and scaling factor of Scale.
Parameters:
Str: | The text to convert to geometry.
|
---|
Space: | Between individual characters, in X axis.
|
---|
ScaleFactor: | Scale factor to control the size of geometry.
|
---|
Height: | Output parameter to hold the geometry height.
|
---|
Returned Value:
IPObjectStruct *: Geometry representing the given text.
|
---|
See Also:
UserText2OutlineCurves2DInit
Keywords:
(font2d.c:51)
Prototype:
IPObjectStruct *UserText2OutlineCurves2DInit(const char *FName)
Description:
Loads the IRIT font file that is specified by the FName file name.
An IRIT font file contains the outline geometries of the characters as a
list ordered according to the ASCII table starting from 32 (space).
Irit font file could be generated by irit script command of the form
All = list( Text2Geom( " ",
"Times New Roman",
0, 0, 0, list( 0.01, 0.3 ), 0.005, 3 ),
Text2Geom( "!",
"Times New Roman",
0, 0, 0, list( 0.01, 0.3 ), 0.005, 3 ),
Text2Geom( "\"",
"Times New Roman",
0, 0, 0, list( 0.01, 0.3 ), 0.005, 3 ),
...
Parameters:
FName: | Name of IRIT font file to load.
|
---|
Returned Value:
IPObjectStruct *: The Object list containing the characters,
or NULL if none.
|
---|
See Also:
UserText2OutlineCurves2D
Keywords:
(tiles2d_sem_reg.c:1051)
Prototype:
IPObjectStruct *UserTile2DSemi12312(UserTileSemiRegType TileType,
const CagdRType TileSize)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 12_3_12.
Parameters:
TileType: | ype of the tile needed, univariate, bivariate or trivariate.
|
---|
TileSize: | he length of side of the polygons.
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363
UserTile2DSemi848
UserTile2DSemi4346
UserTile2DSemi33336
UserTile2DSemi1246
UserTile2DSemi43433
Keywords:
(tiles2d_sem_reg_dual.c:1285)
Prototype:
IPObjectStruct *UserTile2DSemi12312D(UserTileSemiRegDualType TileType,
const CagdRType TileSize,
const CagdRType Indent,
const CagdRType CrvAmt)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 12312Dual.
Parameters:
TileType: | Type of the tile needed, Univariate_Open, univariate closed,
bivariate, trivariate.
|
---|
TileSize: | The length of side of the polygons.
|
---|
Indent: | A Fraction (0 - 1) of the length of a primal edge that is
in used the dual reconstruction.
|
---|
CrvAmt: | Curvature sharpness of dual reconstructed curves (0 - 1).
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363D
UserTile2DSemi44333D
UserTile2DSemi4346D
UserTile2DSemi33336D
UserTile2DSemi1246D
UserTile2DSemi848D
Keywords:
(tiles2d_sem_reg.c:1182)
Prototype:
IPObjectStruct *UserTile2DSemi1246(UserTileSemiRegType TileType,
const CagdRType TileSize)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 12_4_6.
Parameters:
TileType: | ype of the tile needed, univariate, bivariate or trivariate.
|
---|
TileSize: | he length of side of the polygons.
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363
UserTile2DSemi848
UserTile2DSemi4346
UserTile2DSemi33336
UserTile2DSemi12312
UserTile2DSemi43433
Keywords:
(tiles2d_sem_reg_dual.c:1495)
Prototype:
IPObjectStruct *UserTile2DSemi1246D(UserTileSemiRegDualType TileType,
const CagdRType TileSize,
const CagdRType Indent,
const CagdRType CrvAmt)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 1246Dual.
Parameters:
TileType: | Type of the tile needed, Univariate_Open, univariate closed,
bivariate, trivariate.
|
---|
TileSize: | The length of side of the polygons.
|
---|
Indent: | A Fraction (0 - 1) of the length of a primal edge that is
in used the dual reconstruction.
|
---|
CrvAmt: | Curvature sharpness of dual reconstructed curves (0 - 1).
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363D
UserTile2DSemi44333D
UserTile2DSemi4346D
UserTile2DSemi33336D
UserTile2DSemi848D
UserTile2DSemi12312D
Keywords:
(tiles2d_sem_reg.c:917)
Prototype:
IPObjectStruct *UserTile2DSemi33336(UserTileSemiRegType TileType,
const CagdRType TileSize)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 33336.
Parameters:
TileType: | ype of the tile needed, univariate, bivariate or trivariate.
|
---|
TileSize: | he length of side of the polygons.
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363
UserTile2DSemi848
UserTile2DSemi4346
UserTile2DSemi44333
UserTile2DSemi1246
UserTile2DSemi12312
Keywords:
(tiles2d_sem_reg_dual.c:1576)
Prototype:
IPObjectStruct *UserTile2DSemi33336D(UserTileSemiRegDualType TileType,
const CagdRType TileSize,
const CagdRType Indent,
const CagdRType CrvAmt)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 33336Dual.
Parameters:
TileType: | Type of the tile needed, Univariate_Open, univariate closed,
bivariate, trivariate.
|
---|
TileSize: | The length of side of the polygons.
|
---|
Indent: | A Fraction (0 - 1) of the length of a primal edge that is
in used the dual reconstruction.
|
---|
CrvAmt: | Curvature sharpness of dual reconstructed curves (0 - 1).
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363D
UserTile2DSemi44333D
UserTile2DSemi4346D
UserTile2DSemi848D
UserTile2DSemi1246D
UserTile2DSemi12312D
Keywords:
(tiles2d_sem_reg.c:224)
Prototype:
IPObjectStruct *UserTile2DSemi43433(UserTileSemiRegType TileType,
const CagdRType TileSize)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 43433.
Parameters:
TileType: | ype of the tile needed, univariate, bivariate or trivariate.
|
---|
TileSize: | he length of side of the polygons.
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi44333
UserTile2DSemi848
UserTile2DSemi4346
UserTile2DSemi33336
UserTile2DSemi1246
UserTile2DSemi12312
Keywords:
(tiles2d_sem_reg_dual.c:1663)
Prototype:
IPObjectStruct *UserTile2DSemi43433D(UserTileSemiRegDualType TileType,
const CagdRType TileSize,
const CagdRType Indent,
const CagdRType CrvAmt)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 43433Dual.
Parameters:
TileType: | Type of the tile needed, Univariate_Open, univariate closed,
bivariate, trivariate.
|
---|
TileSize: | The length of side of the polygons.
|
---|
Indent: | A Fraction (0 - 1) of the length of a primal edge that is
in used the dual reconstruction.
|
---|
CrvAmt: | Curvature sharpness of dual reconstructed curves (0 - 1).
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363D
UserTile2DSemi44333D
UserTile2DSemi4346D
UserTile2DSemi33336D
UserTile2DSemi1246D
UserTile2DSemi12312D
Keywords:
(tiles2d_sem_reg.c:759)
Prototype:
IPObjectStruct *UserTile2DSemi4346(UserTileSemiRegType TileType,
const CagdRType TileSize)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 4346.
Parameters:
TileType: | ype of the tile needed, univariate, bivariate or trivariate.
|
---|
TileSize: | he length of side of the polygons.
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363
UserTile2DSemi848
UserTile2DSemi44333
UserTile2DSemi33336
UserTile2DSemi1246
UserTile2DSemi12312
Keywords:
(tiles2d_sem_reg_dual.c:1413)
Prototype:
IPObjectStruct *UserTile2DSemi4346D(UserTileSemiRegDualType TileType,
const CagdRType TileSize,
const CagdRType Indent,
const CagdRType CrvAmt)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 4346Dual.
Parameters:
TileType: | Type of the tile needed, Univariate_Open, univariate closed,
bivariate, trivariate.
|
---|
TileSize: | The length of side of the polygons.
|
---|
Indent: | A Fraction (0 - 1) of the length of a primal edge that is
in used the dual reconstruction.
|
---|
CrvAmt: | Curvature sharpness of dual reconstructed curves (0 - 1).
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363D
UserTile2DSemi44333D
UserTile2DSemi848D
UserTile2DSemi33336D
UserTile2DSemi1246D
UserTile2DSemi12312D
Keywords:
(tiles2d_sem_reg.c:394)
Prototype:
IPObjectStruct *UserTile2DSemi44333(UserTileSemiRegType TileType,
const CagdRType TileSize)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 44333.
Parameters:
TileType: | ype of the tile needed, univariate, bivariate or trivariate.
|
---|
TileSize: | he length of side of the polygons.
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363
UserTile2DSemi848
UserTile2DSemi4346
UserTile2DSemi33336
UserTile2DSemi1246
UserTile2DSemi12312
Keywords:
(tiles2d_sem_reg_dual.c:1351)
Prototype:
IPObjectStruct *UserTile2DSemi44333D(UserTileSemiRegDualType TileType,
const CagdRType TileSize,
const CagdRType Indent,
const CagdRType CrvAmt)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 44333Dual.
Parameters:
TileType: | Type of the tile needed, Univariate_Open, univariate closed,
bivariate, trivariate.
|
---|
TileSize: | The length of side of the polygons.
|
---|
Indent: | A Fraction (0 - 1) of the length of a primal edge that is
in used the dual reconstruction.
|
---|
CrvAmt: | Curvature sharpness of dual reconstructed curves (0 - 1).
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363D
UserTile2DSemi848D
UserTile2DSemi4346D
UserTile2DSemi33336D
UserTile2DSemi1246D
UserTile2DSemi12312D
Keywords:
(tiles2d_sem_reg.c:515)
Prototype:
IPObjectStruct *UserTile2DSemi6363(UserTileSemiRegType TileType,
const CagdRType TileSize)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 6363.
Parameters:
TileType: | Type of the tile needed, univariate, bivariate or trivariate.
|
---|
TileSize: | The length of side of the polygons.
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi44333
UserTile2DSemi848
UserTile2DSemi4346
UserTile2DSemi33336
UserTile2DSemi1246
UserTile2DSemi12312
Keywords:
(tiles2d_sem_reg_dual.c:1757)
Prototype:
IPObjectStruct *UserTile2DSemi6363D(UserTileSemiRegDualType TileType,
const CagdRType TileSize,
const CagdRType Indent,
const CagdRType CrvAmt)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 848Dual.
Parameters:
TileType: | Type of the tile needed, Univariate_Open, univariate closed,
bivariate, trivariate.
|
---|
TileSize: | The length of side of the polygons.
|
---|
Indent: | A Fraction (0 - 1) of the length of a primal edge that is
in used the dual reconstruction.
|
---|
CrvAmt: | Curvature sharpness of dual reconstructed curves (0 - 1).
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi848D
UserTile2DSemi44333D
UserTile2DSemi4346D
UserTile2DSemi33336D
UserTile2DSemi1246D
UserTile2DSemi12312D
Keywords:
(tiles2d_sem_reg.c:635)
Prototype:
IPObjectStruct *UserTile2DSemi848(UserTileSemiRegType TileType,
const CagdRType TileSize)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 848.
Parameters:
TileType: | ype of the tile needed, univariate, bivariate or trivariate.
|
---|
TileSize: | he length of side of the polygons.
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363
UserTile2DSemi44333
UserTile2DSemi4346
UserTile2DSemi33336
UserTile2DSemi1246
UserTile2DSemi12312
Keywords:
(tiles2d_sem_reg_dual.c:1225)
Prototype:
IPObjectStruct *UserTile2DSemi848D(UserTileSemiRegDualType TileType,
const CagdRType TileSize,
const CagdRType Indent,
const CagdRType CrvAmt)
Description:
Creates a tile object to be used in order to tile a 2D domain
with polygon vertex 848Dual.
Parameters:
TileType: | Type of the tile needed, Univariate_Open, univariate closed,
bivariate, trivariate.
|
---|
TileSize: | The length of side of the polygons.
|
---|
Indent: | A Fraction (0 - 1) of the length of a primal edge that is
in used the dual reconstruction.
|
---|
CrvAmt: | Curvature sharpness of dual reconstructed curves (0 - 1).
|
---|
Returned Value:
IPObjectStruct *: A pointer to the basic tile.
|
---|
See Also:
UserTile2DSemi6363D
UserTile2DSemi44333D
UserTile2DSemi4346D
UserTile2DSemi33336D
UserTile2DSemi1246D
UserTile2DSemi12312D
Keywords:
(tilepack.c:637)
Prototype:
void UserTileGetSteps(const struct UserTilePackInfoStruct *TilePackInfo,
int *StepsMin,
int *StepsMax,
CagdRType *RelStepsSize)
Description:
Fetches the range of steps for tilings, in TilePackInfo.
Parameters:
TilePackInfo: | A pointer to a tile Info.
|
---|
StepsMin, StepsMax: | o be updated with steps as encoded in TilePackInfo.
Must be of size USER_PACK_TILE_MAX_SPACE_DIM and can be
NULL to ignore.
|
---|
RelStepsSize: | To be updated with the relative scale of the current
step sizes as encoded in TilePackInfo.
Must be of size USER_PACK_TILE_MAX_SPACE_DIM and can be
NULL to ignore.
|
---|
Returned Value:
See Also:
UserTileSetSteps
Keywords:
(tilepack.c:679)
Prototype:
void UserTileSetSteps(struct UserTilePackInfoStruct *TilePackInfo,
const int *StepsMin,
const int *StepsMax,
const CagdRType *RelStepsSize)
Description:
Sets the range of steps for tilings, in PackTileInfo.
Parameters:
TilePackInfo: | A pointer to the tile Info.
|
---|
StepsMin, StepsMax: | o set in TilePackInfo with these steps range.
Must be of size USER_PACK_TILE_MAX_SPACE_DIM and can be
NULL to ignore.
|
---|
RelStepsSize: | Value to specify, to modify (relatively) the step sizes.
Must be of size USER_PACK_TILE_MAX_SPACE_DIM and can be
NULL to ignore.
|
---|
Returned Value:
See Also:
UserTileGetSteps
Keywords:
(unstrct_grid.c:1774)
Prototype:
CagdBType UserTopoAddCell(UserTopoUnstrctGeomStruct *Ud,
const int *PtIdVec,
int PtIdVecLen,
IPObjectStruct *Cell,
int *CellID)
Description:
Adds an Cell to the grid. The Cell is initialized with ctrl-pts
specified by the vector of identifiers given in array PtIdVec. Each
identifier refers to a point in Ud. Also copies PtIdVec to the attribute
list of Cell.
Parameters:
Ud: | The grid, modified in place.
|
---|
PtIdVec: | The vector IDs' of points in Ud.
|
---|
PtIdVecLen: | he number of points in PtIdVec.
|
---|
Cell: | The Cell to initialize control-points of.
|
---|
CellID: | ID of the cell. Return argument.
|
---|
Returned Value:
CagdBType: TRUE if successful, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:1273)
Prototype:
CagdBType UserTopoAddNewCell(UserTopoUnstrctGeomStruct *Ud,
const IPObjectStruct *Cell,
int UpdateGeom,
int *CellID)
Description:
Append the points of the given cell to set of points in Ud and adds
the cell to the Ud, in place.
Parameters:
Ud: | Grid to add new cell to, in place.
|
---|
Cell: | New cell to be added to the grid, along with its points.
|
---|
UpdateGeom: | TRUE to also update the entire geometry on this new cell
(adjacency information, etc.).
|
---|
CellID: | ID of the cell. Return argument.
|
---|
Returned Value:
CagdBType: TRUE if successful, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:1195)
Prototype:
CagdBType UserTopoAddNewCell2(UserTopoUnstrctGeomStruct *Ud,
const IPObjectStruct *Cell,
int UpdateGeom,
int *CellID)
Description:
Append the points of the given cell to set of points in Ud and adds
the cell to the Ud, in place. More efficient than UserTopoAddNewCell
for large data and many new cells.
Parameters:
Ud: | Grid to add new cell to, in place.
|
---|
Cell: | New cell to be added to the grid, along with its points.
|
---|
UpdateGeom: | TRUE to also update the entire geometry on this new cell
(adjacency information, etc.).
|
---|
CellID: | ID of the cell. Return argument.
|
---|
Returned Value:
CagdBType: TRUE if successful, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:1805)
Prototype:
CagdBType UserTopoAddObjectToField(UserTopoUnstrctGeomStruct *Ud,
IPObjectStruct *IPObj)
Description:
Adds an IRIT object to the field of the grid.
Parameters:
Ud: | The grid, modified in place.
|
---|
IPObj: | The object to append to the field.
|
---|
Returned Value:
CagdBType: TRUE if successful, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:1148)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoAddPoints(
const UserTopoUnstrctGeomStruct *Ud,
const UserTopoUnstrctGeomPtStruct *Pts,
int NumPt,
int **RealIDMap)
Description:
Append the given points to set of points in Ud, adjusting Id's
of new points if necessary.
Parameters:
Ud: | Grid to add new set of points to.
|
---|
Pts: | The vector of new points.
|
---|
NumPt: | The number of points in Pts.
|
---|
RealIDMap: | ctor of actual IDs assigned to the points.
|
---|
Returned Value:
UserTopoUnstrctGeomStruct *: Grid with added points.
|
---|
Keywords:
(unstrct_grid.c:4392)
Prototype:
int UserTopoAllEntitiesWithPoint(const UserTopoUnstrctGeomStruct *Ud,
int PtId,
int **EntIds)
Description:
Returns a vector of IDs' of entities in grid having given point. Caller
is owner.
Parameters:
Ud: | The grid.
|
---|
PtId: | ID of the point.
|
---|
EntIds: | Vector if IDs' of entities containing the point. Return
argument. Caller must free the memory.
|
---|
Returned Value:
Keywords:
(unstrct_grid.c:2475)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoAppendUnstrctGeoms(
const UserTopoUnstrctGeomStruct *UdA,
const UserTopoUnstrctGeomStruct *UdB,
CagdRType Eps,
int **RealIDMap)
Description:
Merges two grids, identifying points within specified tolerance.
Optionally merges identified points.
Parameters:
UdA: | First grid to merge.
|
---|
UdB: | Second grid to merge.
|
---|
Eps: | Tolerance for computing adjacency relations.
|
---|
RealIDMap: | Vector of actual IDs assigned to the points.
|
---|
Returned Value:
UserTopoUnstrctGeomStruct *: Merged grid.
|
---|
Keywords:
(unstrct_grid.c:2910)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoApplyFilterToGrid(
const UserTopoUnstrctGeomStruct *Ud,
CagdBType PurgeUnusedPts)
Description:
Filters a grid, wherein the callback function UserTopoFilterGridCBFunc
applying filter on the points of the grid. Optionally purge unused
points.
Parameters:
Ud: | The grid to filter.
|
---|
PurgeUnusedPts: | hether to purge unused points.
|
---|
Returned Value:
UserTopoUnstrctGeomStruct *: The filtered grid.
|
---|
Keywords:
(unstrct_grid.c:2593)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoAssignSequentialCellIDs(
const UserTopoUnstrctGeomStruct *Ud)
Description:
Assigns sequential IDs to cells of Ud, beginning from 1.
Parameters:
Ud: | o assign sequential IDs to cells of.
|
---|
Returned Value:
UserTopoUnstrctGeomStruct *: New grid.
|
---|
Keywords:
(unstrct_grid.c:2542)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoAssignSequentialPointIDs(
const UserTopoUnstrctGeomStruct *Ud)
Description:
Assigns sequential IDs to points of Ud, beginning from 1.
Parameters:
Ud: | o assign sequential IDs to points of.
|
---|
Returned Value:
UserTopoUnstrctGeomStruct *: New grid.
|
---|
Keywords:
(unstrct_grid.c:6206)
Prototype:
int UserTopoCellClosestToPoint(const UserTopoUnstrctGeomStruct *Ud,
const CagdPType Pt,
UserTopoUnstrctGridClosestEntityType
ClosestEntity,
int *FaceIdx,
int *EdgeIdx,
int *CrnrIdx,
int *UVWMax)
Description:
Return the ID of the cell closest to the given point.
Parameters:
Ud: | The grid whose cells to consider.
|
---|
Pt: | Point to measure distance from.
|
---|
ClosestEntity: | Search closest faces, closest edges (for surfaces and
trivariates) or closest corners.
|
---|
FaceIdx: | For a trivariates, returns the index of the face - 1 to 6 for
one of (UMin, UMax, VMin, VMax, WMin, WMax).
|
---|
EdgeIdx: | For a surface or a trivariates, returns the index of the edge
- 1 to 4 for one of (UMin, UMax, VMin, VMax).
|
---|
CrnrIdx: | Corner index in lexicographic order from (UMin, {VMin, AMax})
to (UMax {, VMax, WMax}). 1 to 8.
|
---|
UVWMax: | A vector of 3 coordinates to set if Pt is near the min (FALSE)
Max of the domain.
|
---|
Returned Value:
int: ID of the cell of Ud which is closest to Pt.
|
---|
Keywords:
(unstrct_grid.c:4468)
Prototype:
int UserTopoCellsAdjacentToCell(const UserTopoUnstrctGeomStruct *Ud,
int CellID,
int **EntIDs)
Description:
Returns a vector of IDs' of cells in grid which are adjacent to the
given Cell. Caller is owner.
Parameters:
Ud: | The grid.
|
---|
CellID: | D of the Cell to return adjacency-list of.
|
---|
EntIDs: | Vector if IDs' of entities adjacent to CellID. Return
argument. Caller must free the memory.
|
---|
Returned Value:
int: Number of entities, 0 if CellID not found in Ud.
|
---|
Keywords:
(unstrct_grid.c:3351)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoCrvBndryFilter(
const UserTopoUnstrctGeomStruct *Ud)
Description:
Computes the grid wherein the points are the end-points of the curve of
the input grid.
Parameters:
Ud: | The grid to compute boundary of the curves of.
|
---|
Returned Value:
UserTopoUnstrctGeomStruct *: Grid with end-pts of curves of Ud.
|
---|
Keywords:
(unstrct_grid.c:4568)
Prototype:
int UserTopoGetCellAttrThreshold(const UserTopoUnstrctGeomStruct *Ud,
char *AttrName,
int AttrMinVal,
int AttrMaxVal,
int **EntIDs)
Description:
Returns a vector of IDs' of entities in grid having the value of an
attribute between prescribed values. Caller is owner of vector of IDs.
Parameters:
Ud: | The grid.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrMinVal: | inimum value of attribute.
|
---|
AttrMaxVal: | aximum value of attribute.
|
---|
EntIDs: | Vector if IDs' of entities. Return argument. Caller must
free the memory.
|
---|
Returned Value:
Keywords:
(unstrct_grid.c:4144)
Prototype:
int UserTopoGetCellIntAttr(const UserTopoUnstrctGeomStruct *Ud,
int CellID,
char *AttrName)
Description:
Returns the integer attribute of the Cell.
Parameters:
Ud: | The grid.
|
---|
CellID: | D of the Cell.
|
---|
AttrName: | ame of attribute to return.
|
---|
Returned Value:
int: Value of the attribute.
|
---|
Keywords:
(unstrct_grid.c:4183)
Prototype:
int UserTopoGetCellIntAttrVec(UserTopoUnstrctGeomStruct *Ud,
int *CellIDVec,
int NumCellID,
char *AttrName,
int **AttrValueVec)
Description:
Returns vector of attribute values for the cell-ID vector.
Parameters:
Ud: | The grid.
|
---|
CellIDVec: | Vector of IDs of cells to return the attribute of.
|
---|
NumCellID: | Length of CellIDVec.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValueVec: | ector of attribute values. Return argument. Caller is
owner.
|
---|
Returned Value:
int: TRUE is success, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:4212)
Prototype:
CagdRType UserTopoGetCellRealAttr(const UserTopoUnstrctGeomStruct *Ud,
int CellID,
char *AttrName)
Description:
Returns the attribute of the Cell.
Parameters:
Ud: | The grid.
|
---|
CellID: | D of the Cell.
|
---|
AttrName: | ame of attribute to return.
|
---|
Returned Value:
CagdRType: Value of the attribute.
|
---|
Keywords:
(unstrct_grid.c:4251)
Prototype:
int UserTopoGetCellRealAttrVec(UserTopoUnstrctGeomStruct *Ud,
int *CellIDVec,
int NumCellID,
char *AttrName,
CagdRType **AttrValueVec)
Description:
Returns vector of attribute values for the cell-ID vector.
Parameters:
Ud: | The grid.
|
---|
CellIDVec: | Vector of IDs of cells to return the attribute of.
|
---|
NumCellID: | Length of CellIDVec.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValueVec: | ector of attribute values. Return argument. Caller is
owner.
|
---|
Returned Value:
int: TRUE is success, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:4280)
Prototype:
const char *UserTopoGetCellStrAttr(const UserTopoUnstrctGeomStruct *Ud,
int CellID,
char *AttrName)
Description:
Returns the attribute of the Cell.
Parameters:
Ud: | The grid.
|
---|
CellID: | D of the Cell.
|
---|
AttrName: | ame of attribute to return.
|
---|
Returned Value:
const char *: Value of the attribute.
|
---|
Keywords:
(unstrct_grid.c:4319)
Prototype:
int UserTopoGetCellStrAttrVec(UserTopoUnstrctGeomStruct *Ud,
int *CellIDVec,
int NumCellID,
char *AttrName,
const char ***AttrValueVec)
Description:
Returns vector of attribute values for the cell-ID vector.
Parameters:
Ud: | The grid.
|
---|
CellIDVec: | Vector of IDs of cells to return the attribute of.
|
---|
NumCellID: | Length of CellIDVec.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValueVec: | ector of attribute values. Return argument. Caller is
owner of vector of strings but not the strings.
|
---|
Returned Value:
int: TRUE is success, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:1830)
Prototype:
IPObjectStruct *UserTopoGetField(UserTopoUnstrctGeomStruct *Ud)
Description:
Returns the field of the grid.
Parameters:
Ud: | The grid, to return field of.
|
---|
Returned Value:
IPObjectStruct *: TRUE if successful, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:4518)
Prototype:
int UserTopoGetPointAttrThreshold(const UserTopoUnstrctGeomStruct *Ud,
char *AttrName,
int AttrMinVal,
int AttrMaxVal,
int **PtIDs)
Description:
Returns a vector of IDs' of points in grid having the value of an
attribute between prescribed values. Caller is owner of vector of IDs.
Parameters:
Ud: | The grid.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrMinVal: | inimum value of attribute.
|
---|
AttrMaxVal: | aximum value of attribute.
|
---|
PtIDs: | Vector if IDs' of points. Return argument. Caller must
free the memory.
|
---|
Returned Value:
Keywords:
(unstrct_grid.c:3951)
Prototype:
int UserTopoGetPointIntAttr(const UserTopoUnstrctGeomStruct *Ud,
int PtId,
char *AttrName)
Description:
Returns the integer attribute of the point.
Parameters:
Ud: | The grid.
|
---|
PtId: | ID of the point to return the attribute of.
|
---|
AttrName: | ame of the attribute.
|
---|
Returned Value:
int: Value of the attribute.
|
---|
Keywords:
(unstrct_grid.c:3987)
Prototype:
int UserTopoGetPointIntAttrVec(UserTopoUnstrctGeomStruct *Ud,
int *PtIdVec,
int NumPtId,
char *AttrName,
int **AttrValueVec)
Description:
Returns vector of attribute values for the point-ID vector.
Parameters:
Ud: | The grid.
|
---|
PtIdVec: | Vector of IDs of points to return the attribute of.
|
---|
NumPtId: | Length of PtIdVec.
|
---|
AttrName: | ame of the attribute.
|
---|
AttrValueVec: | ector of attribute values. Return argument. Caller is
owner.
|
---|
Returned Value:
int: TRUE is success, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:4015)
Prototype:
CagdRType UserTopoGetPointRealAttr(const UserTopoUnstrctGeomStruct *Ud,
int PtId,
char *AttrName)
Description:
Returns the real attribute of the point.
Parameters:
Ud: | The grid.
|
---|
PtId: | ID of the point to return the attribute of.
|
---|
AttrName: | ame of the attribute.
|
---|
Returned Value:
CagdRType: Value of the attribute.
|
---|
Keywords:
(unstrct_grid.c:4051)
Prototype:
int UserTopoGetPointRealAttrVec(UserTopoUnstrctGeomStruct *Ud,
int *PtIdVec,
int NumPtId,
char *AttrName,
CagdRType **AttrValueVec)
Description:
Returns vector of attribute values for the point-ID vector.
Parameters:
Ud: | The grid.
|
---|
PtIdVec: | Vector of IDs of points to return the attribute of.
|
---|
NumPtId: | Length of PtIdVec.
|
---|
AttrName: | ame of the attribute.
|
---|
AttrValueVec: | ector of attribute values. Return argument. Caller is
owner.
|
---|
Returned Value:
int: TRUE is success, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:4080)
Prototype:
const char *UserTopoGetPointStrAttr(const UserTopoUnstrctGeomStruct *Ud,
int PtId,
char *AttrName)
Description:
Returns the string attribute of the point.
Parameters:
Ud: | The grid.
|
---|
PtId: | ID of the point to return the attribute of.
|
---|
AttrName: | ame of the attribute.
|
---|
Returned Value:
const char *: Value of the attribute.
|
---|
Keywords:
(unstrct_grid.c:4116)
Prototype:
int UserTopoGetPointStrAttrVec(UserTopoUnstrctGeomStruct *Ud,
int *PtIdVec,
int NumPtId,
char *AttrName,
const char ***AttrValueVec)
Description:
Returns vector of attribute values for the point-ID vector.
Parameters:
Ud: | The grid.
|
---|
PtIdVec: | Vector of IDs of points to return the attribute of.
|
---|
NumPtId: | Length of PtIdVec.
|
---|
AttrName: | ame of the attribute.
|
---|
AttrValueVec: | ector of attribute values. Return argument. Caller is
the owner of the vector of strings, but not the stings.
|
---|
Returned Value:
int: TRUE is success, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:3864)
Prototype:
IPObjectStruct *UserTopoIdToObject(const UserTopoUnstrctGeomStruct *Ud,
int Id)
Description:
Returns the object in the grid with given ID.
Parameters:
Ud: | The grid.
|
---|
Id: | ID of the Cell to return.
|
---|
Returned Value:
IPObjectStruct *: The Cell in grid if found, NULL otherwise.
|
---|
Keywords:
(unstrct_grid.c:863)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoMergePoints(
const UserTopoUnstrctGeomStruct *Ud,
CagdRType Eps,
CagdBType IdentifyNoMerge,
const CagdBType *MergePtIndices,
int **MergedIDMap,
int *MergeIDMapLen)
Description:
Merges points of input grid, which are identical upto the supplied
tolerance. ith point of the grid is considered for merging only if
ith bit in the input vector is TRUE.
Parameters:
Ud: | Input grid to merge points of.
|
---|
Eps: | Tolerance up to which to merge points.
|
---|
IdentifyNoMerge: | f TRUE, only mark the identical points without
actually merging them.
|
---|
MergePtIndices: | ctor of flags indicating if a point is to be considered
for merging. The ith point is considered for merging only if
ith value in the vector MergePtIndices is TRUE.
NULL will consider all points.
|
---|
MergedIDMap: | ctor of pairs of IDs of points which are merged. Length of
this vector is twice the number of points which were merged,
i.e., 2 * (#pts in Ud - #pts in returned grid).
|
---|
MergeIDMapLen: | ength of vector MergedIDMap.
|
---|
Returned Value:
UserTopoUnstrctGeomStruct *: Grid with merged points.
|
---|
Keywords:
(unstrct_grid.c:1853)
Prototype:
int UserTopoModifyPoint(UserTopoUnstrctGeomStruct *Ud,
int PtId,
const UserTopoUnstrctGeomPtStruct *Pt)
Description:
Modifies a point in the grid, in place. Updates all entities which
contain this point.
Parameters:
Ud: | The grid, modified in place.
|
---|
PtId: | ID of the point to modify.
|
---|
Pt: | New coordinates of the point.
|
---|
Returned Value:
int: TRUE if point found in the grid, FALSE otherwise.
|
---|
Keywords:
(unstrct_grid.c:4436)
Prototype:
int UserTopoNumOfEntOfType(const UserTopoUnstrctGeomStruct *Ud,
IPObjStructType Type)
Description:
The number of entities in the grid of given type.
Parameters:
Ud: | The grid.
|
---|
Type: | Type of Cell.
|
---|
Returned Value:
Keywords:
(unstrct_grid.c:3832)
Prototype:
int UserTopoObjectToId(const UserTopoUnstrctGeomStruct *Ud,
const IPObjectStruct *Cell)
Description:
Returns the ID of the object in the grid.
Parameters:
Ud: | The grid.
|
---|
Cell: | ell whose ID to return.
|
---|
Returned Value:
int: ID of the Cell if found in the grid, -1 if not found.
|
---|
Keywords:
(unstrct_grid.c:6087)
Prototype:
int UserTopoPolylineSelector(const UserTopoUnstrctGeomStruct *Ud,
const IPPolygonStruct *Poly,
const CagdPType Dir,
int **CellIDVec)
Description:
Returns IDs of all cells which intersect with the frustum of the
polyline in the given direction .
Parameters:
Ud: | The grid to select cells of.
|
---|
Poly: | The polygon to use for selection.
|
---|
Dir: | Direction to use for frustum.
|
---|
CellIDVec: | Vector of IDs of cells selected. User is owner.
|
---|
Returned Value:
int: Number of cells selected.
|
---|
Keywords:
(unstrct_grid.c:4349)
Prototype:
int UserTopoPtsOfCell(const UserTopoUnstrctGeomStruct *Ud,
int EntId,
int **PtIds)
Description:
Returns a vector of IDs' of points in Cell. Caller is owner.
Parameters:
Ud: | The grid.
|
---|
EntId: | ID of the Cell.
|
---|
PtIds: | Vector if IDs' of points in Cell. Caller must free. Return
argument.
|
---|
Returned Value:
int: Number of points in Cell, -1 if Cell not found in grid.
|
---|
Keywords:
(unstrct_grid.c:959)
Prototype:
void UserTopoPtsOfCellsWithAttrib(const UserTopoUnstrctGeomStruct *Ud,
UserTopoUnstrctGridAttrType AttrType,
int NumAttr,
const int *NumAttrVals,
const char **AttrNames,
const void *AttrVals,
CagdBType **PtIndxVec)
Description:
Extracts the points of input grid which belong to cells having any of
the given list of attributes.
Parameters:
Ud: | Input grid to extract points of.
|
---|
AttrType: | Type of attribute.
|
---|
NumAttr: | Number of attributes.
|
---|
NumAttrVals: | ctor containing number of values for each attribute.
|
---|
AttrNames: | Vector of names of attributes.
|
---|
AttrVals: | Array of attribute-values of type specified by AttrType.
|
---|
PtIndxVec: | Vector of length equal to number of points in Ud. The
ith element is TRUE if the ith point of Ud is extracted.
Return argument. Can be NULL, in which case it is allocated.
|
---|
Returned Value:
Keywords:
(unstrct_grid.c:2823)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoPurgeUnusedPts(
const UserTopoUnstrctGeomStruct *Ud)
Description:
Discards points not used by any cell. Does NOT recompute adjacency
relations. User must recompute them.
Parameters:
Ud: | Grid to purge points in.
|
---|
Returned Value:
UserTopoUnstrctGeomStruct *: Grid with unused points purged.
|
---|
Keywords:
(unstrct_grid.c:6542)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoReadGridFromFile(const char *FileName)
Description:
Read a grid from a file.
Parameters:
FileName: | Name of the file to read from.
|
---|
Returned Value:
UserTopoUnstrctGeomStruct *: Grid read from file, NULL if error.
|
---|
Keywords:
(unstrct_grid.c:2176)
Prototype:
int UserTopoSetCellIntAttr(UserTopoUnstrctGeomStruct *Ud,
IPObjectStruct *Cell,
const char *AttrName,
int AttrValue)
Description:
Sets an attribute for the Cell.
Parameters:
Ud: | The grid, modified in place.
|
---|
Cell: | Cell to set attribute of, in place.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValue: | Value of the attribute.
|
---|
Returned Value:
int: Return 1 if successful, 0 otherwise.
|
---|
Keywords:
(unstrct_grid.c:2215)
Prototype:
int UserTopoSetCellIntAttrVec(UserTopoUnstrctGeomStruct *Ud,
const int *CellIDVec,
int NumCellID,
const char *AttrName,
const int *AttrValueVec,
int NumVals)
Description:
Sets attributes for the vector of Cell IDs.
Parameters:
Ud: | The grid, modified in place.
|
---|
CellIDVec: | Vector of IDs of cells to set attribute of, in place.
|
---|
NumCellID: | Length of CellIDVec.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValueVec: | ector of values of the attribute.
|
---|
NumVals: | Length of AttrValueVec.
|
---|
Returned Value:
int: Return 1 if successful, 0 otheriwse.
|
---|
Keywords:
(unstrct_grid.c:2275)
Prototype:
int UserTopoSetCellRealAttr(UserTopoUnstrctGeomStruct *Ud,
IPObjectStruct *Cell,
const char *AttrName,
CagdRType AttrValue)
Description:
Sets an attribute for the Cell.
Parameters:
Ud: | The grid, modified in place.
|
---|
Cell: | Cell to set attribute of, in place.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValue: | Value of the attribute.
|
---|
Returned Value:
int: Return 1 if successful, 0 otherwise.
|
---|
Keywords:
(unstrct_grid.c:2314)
Prototype:
int UserTopoSetCellRealAttrVec(UserTopoUnstrctGeomStruct *Ud,
const int *CellIDVec,
int NumCellID,
const char *AttrName,
const CagdRType *AttrValueVec,
int NumVals)
Description:
Sets attributes for the vector of Cell IDs.
Parameters:
Ud: | The grid, modified in place.
|
---|
CellIDVec: | Vector of IDs of cells to set attribute of, in place.
|
---|
NumCellID: | Length of CellIDVec.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValueVec: | ector of values of the attribute.
|
---|
NumVals: | Length of AttrValueVec.
|
---|
Returned Value:
int: Return 1 if successful, 0 otherwise.
|
---|
Keywords:
(unstrct_grid.c:2374)
Prototype:
int UserTopoSetCellStrAttr(UserTopoUnstrctGeomStruct *Ud,
IPObjectStruct *Cell,
const char *AttrName,
const char *AttrValue)
Description:
Sets an attribute for the Cell.
Parameters:
Ud: | The grid, modified in place.
|
---|
Cell: | Cell to set attribute of, in place.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValue: | Value of the attribute.
|
---|
Returned Value:
int: Return 1 if successful, 0 otherwise.
|
---|
Keywords:
(unstrct_grid.c:2413)
Prototype:
int UserTopoSetCellStrAttrVec(UserTopoUnstrctGeomStruct *Ud,
const int *CellIDVec,
int NumCellID,
const char *AttrName,
const char **AttrValueVec,
int NumVals)
Description:
Sets attributes for the vector of Cell IDs.
Parameters:
Ud: | The grid, modified in place.
|
---|
CellIDVec: | Vector of IDs of cells to set attribute of, in place.
|
---|
NumCellID: | Length of CellIDVec.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValueVec: | ector of values of the attribute.
|
---|
NumVals: | Length of AttrValueVec.
|
---|
Returned Value:
int: Return 1 if successful, 0 otherwise.
|
---|
Keywords:
(unstrct_grid.c:2879)
Prototype:
UserTopoFilterGridCBFuncType UserTopoSetFilterGridCallBackFunc(
UserTopoFilterGridCBFuncType NewFunc)
Description:
Sets a callback function for filtering points in a UG.
Parameters:
NewFunc: | New function to set.
|
---|
Returned Value:
UserTopoFilterGridCBFuncType: The previous function.
|
---|
Keywords:
(unstrct_grid.c:1896)
Prototype:
int UserTopoSetPointIntAttr(UserTopoUnstrctGeomStruct *Ud,
int PtId,
const char *AttrName,
int AttrValue)
Description:
Sets an attribute for the point.
Parameters:
Ud: | The grid, modified in place.
|
---|
PtId: | ID of the point to set attribute of.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValue: | Value of the attribute.
|
---|
Returned Value:
int: Return 1 if successful, 0 otherwise.
|
---|
Keywords:
(unstrct_grid.c:1933)
Prototype:
int UserTopoSetPointIntAttrVec(UserTopoUnstrctGeomStruct *Ud,
const int *PtIdVec,
int NumPtId,
const char *AttrName,
const int *AttrValueVec,
int NumVals)
Description:
Sets attributes for vector of points.
Parameters:
Ud: | The grid, modified in place.
|
---|
PtIdVec: | Vector of IDs of points to set attribute of.
|
---|
NumPtId: | Length of PtIdVec.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValueVec: | Vector of values of the attribute.
|
---|
NumVals: | Number of values.
|
---|
Returned Value:
int: Return 1 if successful, 0 otherwise.
|
---|
Keywords:
(unstrct_grid.c:1990)
Prototype:
int UserTopoSetPointRealAttr(UserTopoUnstrctGeomStruct *Ud,
int PtId,
const char *AttrName,
CagdRType AttrValue)
Description:
Sets an attribute for the point.
Parameters:
Ud: | The grid, modified in place.
|
---|
PtId: | ID of the point to set attribute of.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValue: | Value of the attribute.
|
---|
Returned Value:
int: Return 1 if successful, 0 otherwise.
|
---|
Keywords:
(unstrct_grid.c:2027)
Prototype:
int UserTopoSetPointRealAttrVec(UserTopoUnstrctGeomStruct *Ud,
const int *PtIdVec,
int NumPtId,
const char *AttrName,
const CagdRType *AttrValueVec,
int NumVals)
Description:
Sets attributes for vector of points.
Parameters:
Ud: | The grid, modified in place.
|
---|
PtIdVec: | Vector of IDs of points to set attribute of.
|
---|
NumPtId: | Length of PtIdVec.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValueVec: | Vector of values of the attribute.
|
---|
NumVals: | Length of AttrValueVec.
|
---|
Returned Value:
int: Return 1 if successful, 0 otherwise.
|
---|
Keywords:
(unstrct_grid.c:2083)
Prototype:
int UserTopoSetPointStrAttr(UserTopoUnstrctGeomStruct *Ud,
int PtId,
const char *AttrName,
const char *AttrValue)
Description:
Sets an attribute for the point.
Parameters:
Ud: | The grid, modified in place.
|
---|
PtId: | ID of the point to set attribute of.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValue: | Value of the attribute.
|
---|
Returned Value:
int: Return 1 if successful, 0 otherwise.
|
---|
Keywords:
(unstrct_grid.c:2120)
Prototype:
int UserTopoSetPointStrAttrVec(UserTopoUnstrctGeomStruct *Ud,
const int *PtIdVec,
int NumPtId,
const char *AttrName,
const char **AttrValueVec,
int NumVals)
Description:
Sets attributes for vector of points.
Parameters:
Ud: | The grid, modified in place.
|
---|
PtIdVec: | Vector of IDs of points to set attribute of.
|
---|
NumPtId: | Length of PtIdVec.
|
---|
AttrName: | Name of the attribute.
|
---|
AttrValueVec: | Vector of values of the attribute.
|
---|
NumVals: | Length of AttrValueVec.
|
---|
Returned Value:
int: Return 1 if successful, 0 otherwise.
|
---|
Keywords:
(unstrct_grid.c:1725)
Prototype:
CagdBType UserTopoSetPoints(UserTopoUnstrctGeomStruct *Ud,
UserTopoUnstrctGeomPtStruct *Pts,
int NumPt)
Description:
Sets the points of the grid, using the points vector inplace.
Parameters:
Ud: | Grid to set points of.
|
---|
Pts: | The vector of points.
|
---|
NumPt: | The number of points.
|
---|
Returned Value:
CagdBType: TRUE if successful, FALSE if duplicate IDs found.
|
---|
Keywords:
(unstrct_grid.c:3593)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoSrfBndryFilter(
const UserTopoUnstrctGeomStruct *Ud)
Description:
Computes the grid wherein the points belong to the boundary curves of
the surfaces of the input grid.
Parameters:
Ud: | The grid to compute boundary of the surfaces of.
|
---|
Returned Value:
UserTopoUnstrctGeomStruct *: Grid with boundary curves of surfaces of Ud.
|
---|
Keywords:
(unstrct_grid.c:3674)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoTrivBndryFilter(
const UserTopoUnstrctGeomStruct *Ud)
Description:
Computes the grid wherein the points belong to the boundary srfs of
the trivars of the input grid.
Parameters:
Ud: | The grid to compute boundary of the trivars of.
|
---|
Returned Value:
UserTopoUnstrctGeomStruct *: Grid with boundary srfs of surfaces of Ud.
|
---|
Keywords:
(unstrct_grid.c:3903)
Prototype:
void UserTopoUDData(const UserTopoUnstrctGeomStruct *Ud,
UserTopoUnstrctGeomReturnStruct *Data)
Description:
Returns the data of the grid with given ID.
Parameters:
Ud: | The grid.
|
---|
Data: | To return the data in.
|
---|
Returned Value:
Keywords:
(unstrct_grid.c:1662)
Prototype:
void UserTopoUnstrctGeomFree(UserTopoUnstrctGeomStruct *Ud)
Description:
Frees a UserTopoUnstrctGeomStruct grid.
Parameters:
Returned Value:
See Also:
UserTopoUnstrctGeomNew
Keywords:
(unstrct_grid.c:7302)
Prototype:
UserTopoUnstrctGeomReturnStruct *UserTopoUnstrctGeomMain(
UserTopoUnstructGridOpType OperationID,
UserTopoUnstrctGeomParamStruct *Params)
Description:
Main function for invoking required functionalities for the
unstructured grid.
Parameters:
OperationID: | ID to select the required functionality.
|
---|
Params: | Parameters of this specific operation (& return val) -
USER_UG_CREATE - None.
Returns the ID of the newly created UG.
USER_UG_FREE - ID of the UG to free.
Returns Success-Flag, i.e., TRUE if successful, FALSE otherwise.
USER_UG_SET_POINTS - ID of UG, List of Pts, List of Pt-IDs.
Returns Success- Flag, vector of actual IDs assigned to pts in
grid.
USER_UG_ADD_POINTS - ID of UG, List of Pts, List of Pt-IDs.
Returns Success- Flag, ID of new UG, number of points in grid,
vector of actual IDs assigned to pts in grid.
USER_UG_EXTRACT_POINTS - ID of UG, attribute-type, attribute-names
attribute-values.
Returns binary vector with 1s' for selected points.
USER_UG_MERGE_POINTS - ID of UG, flag to identify points without
merging, binary vector with 1s' for points to consider for merge.
Returns Success- Flag, ID of new UG, number of points in new UG,
vector indicating which points were identified.
USER_UG_MODIFY_POINT - ID of UG, ID of Point to modify, new
coordinates of point.
Returns Success- Flag.
USER_UG_ADD_CELL - ID of UG, Cell, List of point IDs.
Returns Success- Flag, ID of Cell.
USER_UG_APPEND_UG - ID of UG1, ID of UG2.
Returns Success- Flag, ID of new UG, number of points in grid,
vector of IDs assigned to points of second grid.
USER_UG_UPDATE - ID of UG, Tolerance for merging identical entities.
Returns Success- Flag.
USER_UG_PURGE_UNUSED - ID of UG.
Returns Success- Flag, ID of new UG, number of points in new UG.
USER_UG_ID_TO_CELL - ID of UG, ID of Cell.
Returns Success- Flag, Cell.
USER_UG_CELL_TO_ID - ID of UG, Cell.
Returns Success- Flag, ID of Cell.
USER_UG_SET_FILTER_CB_FUNC - Not implemented.
USER_UG_FILTER_GRID - Not implemented.
USER_UG_DATA - ID of UG
USER_UG_CRV_BNDRY_FILTER - ID of UG to filter.
Returns Success-flag, ID of new UG, number of pts in grid.
USER_UG_SRF_BNDRY_FILTER - ID of UG to filter.
Returns Success-flag, ID of new UG (external bndry), ID of new
UG (internal bndry), ID of new UG (internal bndry, different
function spaces), number of pts in grid.
USER_UG_TRIV_BNDRY_FILTER - ID of UG to filter.
Returns Success-flag, ID of new UG (external bndry), ID of new
UG (internal bndry), ID of new UG (internal bndry, different
function spaces), number of pts in grid.
USER_UG_SET_POINT_ATTR - ID of UG, attribute-type, attribute name,
list of point-ids, list of attribute values.
Returns Success-flag.
USER_UG_GET_POINT_ATTR - ID of UG, attribute-type, attribute name,
list of point-ids.
Returns Success-flag, list of attribute values.
USER_UG_SET_CELL_ATTR - ID of UG, attribute-type, attribute name,
list of cell-ids, list of attribute values.
Returns Success-flag.
USER_UG_GET_CELL_ATTR - ID of UG, attribute-type, attribute name,
list of cell-ids.
Returns Success-flag, list of attribute values.
USER_UG_GET_ADJACENCY_LIST - ID of UG, ID of cell.
Returns Success-flag, list of cell-ids adjacent to given cell.
USER_UG_GET_PTID_CELLID_LIST - ID of UG.
Returns Success-flag, list of point-IDs, list of cell-IDs of UG.
USER_UG_GET_CELL_PTID_LIST - ID of UG, ID of cell.
Returns a list (CellID, CellType, list of IDs of points in cell).
USER_UG_GET_UG_POINT_LIST - ID of UG.
Returns a list of all points in cell, including their IDs.
USER_UG_SEQ_POINT_IDS - ID of UG.
Returns Success-flag, ID of new UG, number of points in new UG.
USER_UG_SEQ_CELL_IDS - ID of UG.
Returns Success-flag, ID of new UG, number of points in new UG.
USER_UG_ADD_OBJECT_TO_FIELD - ID of UG, Object to add.
Returns Success-flag.
USER_UG_GET_FIELD - ID of UG.
Returns Success-flag, field as an object-list.
USER_UG_ADD_NEW_CELL - ID of UG, cell to add.
Returns Success-flag, number of points in UG, Cell Id.
USER_UG_GET_BEZIER_PATCHES - ID of UG.
Returns Success-flag, ID of new UG, number of points in new UG.
Converts all B-spline patches to Bezier.
USER_UG_REFINE_CELLS - ID of UG, Cell-Id to refine, direction to
refine, parameter values to refine at, number of values.
Returns Success-flag, ID of new UG, number of points in new UG.
USER_UG_PT_CELL_SELECTOR - ID of UG, point, Closest Entity (closest
face for 1, closest edge for 2, and closest corner for 2).
Optionally, can have a fourth parameter with an attribute to
place on the selected entity, as "list( attrName, AttrVal )".
Returns Success-flag, ID of selected cell.
USER_UG_POLY_CELL_SELECTOR - ID of UG, polyline, direction.
Returns Success-flag, IDs of cells selected, number of cell IDs.
USER_UG_REFINE_CELLS_AT_PT - ID of UG, RefRatio, RefLen, Pt, Div1,
Div2, Div3. Div1/2/3 refer to divisions to refine at for
closest entity to Pt. Div1 must be positive. If Div2 < 0,
closest edge is considered and refined Div1 times. If Div2 > 0
and Div3 < 0, closest face is considered and refined Div1 x Div2
times. If Div2 > 0 and Div3 > 0, closest volume (trivariate)
is considered and refined Div1 x Div2 x Div3 times. RefRatio
sets the size ratios between the first division and last (set to
one for similar sizes). RefLen defines the desired default edge
length after refinement.
Returns Success-flag, ID of new UG, number of points in new UG.
USER_UG_REFINE_UNREF_CELLS - ID of UG, RefSize. Returns a
globally refined grid of all unrefined so far cells in all dirs.
Cells are refined in Dir so the refinement will yield sizes (in
Euclidean space) smaller than RefSize. If RefSize is zero, 5% of
the bbox of the input geometry is set to RefSize. If RefSize
is negative, -Refsize of the bbox of the input geometry will be
used as RefSize.
USER_UG_WRITE_GRID_TO_FILE - ID of UG, file-name (NULL for stdout).
Returns Success-flag.
USER_UG_READ_GRID_FROM_FILE - File-name to read from.
Returns Success-flag, ID of new UG, number of points in new UG.
USER_UG_GET_LINEAR_PATCHES - ID of UG.
Returns Success-flag, ID of new UG, number of points in new UG.
Converts all patches to linear Bezier patches. An
approximation of the input UG patches.
|
---|
Returned Value:
UserTopoUnstrctGeomReturnStruct *: Return parameters.
|
---|
Keywords:
(unstrct_grid.c:1602)
Prototype:
UserTopoUnstrctGeomStruct *UserTopoUnstrctGeomNew(void)
Description:
Allocates a new UserTopoUnstrctGeomStruct.
Parameters:
Returned Value:
UserTopoUnstrctGeomStruct *: Newly allocated structure.
|
---|
See Also:
UserTopoUnstrctGeomFree
UserTopoUnstrctGeomNew2
Keywords:
(unstrct_grid.c:1638)
Prototype:
void UserTopoUnstrctGeomPtCopyData(UserTopoUnstrctGeomPtStruct *Dest,
const UserTopoUnstrctGeomPtStruct *Src)
Description:
Copies the data from source point to destination point, without
allocating any new memory.
Parameters:
Dest: | Destination point.
|
---|
Src: | Source point.
|
---|
Returned Value:
Keywords:
(unstrct_grid.c:3812)
Prototype:
void UserTopoUnstrctGeomUpdate(UserTopoUnstrctGeomStruct **Ud,
CagdRType Eps)
Description:
Computes the adjacency relations between all the entities in the grid,
upto specified tolerance. Purges unused points if requested, in place.
Parameters:
Ud: | The grid.
|
---|
Eps: | Tolerance value.
|
---|
Returned Value:
Keywords:
(unstrct_grid.c:6405)
Prototype:
CagdBType UserTopoWriteGridToFile(const UserTopoUnstrctGeomStruct *Ud,
const char *FileName)
Description:
Write the input grid to the file on disk.
Parameters:
Ud: | The grid to write.
|
---|
FileName: | Name of the file to write to.
NULL or zero length string for stdout.
|
---|
Returned Value:
CagdBType: TRUE if written successfully, FALSE otherwise.
|
---|
Keywords:
(tv0jacob.c:95)
Prototype:
IPObjectStruct *UserTrivarZeros(const TrivTVStruct *TV,
const TrivTVStruct *TVEuclidean,
int SkipRate,
const CagdRType Fineness[3])
Description:
Approximate the zero set of a trivariate function.
Parameters:
TV: | Trivariate function to approximate its zero set.
|
---|
TVEuclidean: | If provided, use this trivariate to evaluate into
Euclidean space.
|
---|
SkipRate: | Of data in the volume. 1 skips nothing, 2 every second,
etc.
|
---|
Fineness: | Of trivariate global refinment level, 0 for no ref., in
all three axes.
|
---|
Returned Value:
IPObjectStruct *: The approximation of the zeros of the trivariate.
|
---|
See Also:
UserTVZeroJacobian
Keywords:
(truss_base.c:2565)
Prototype:
void UserTrussCleanBeamICrvs(UserTrussClipAgainstBeamsInfoStruct *ClipInfo)
Description:
Prepare the clipping information for clipping the beams of the truss
lattice. This function computes the intersections using the SSI algorithm,
which is slow, but supports beams of arbitrary shape.
Parameters:
ClipInfo: | The clipping information structure to be filled.
|
---|
Returned Value:
See Also:
UserTrussPrepBeamICrvsFast
UserTrussPrepBeamICrvsMatched
UserTrussCleanBeamICrvs
Keywords:
(truss_base.c:863)
Prototype:
TrimSrfStruct *UserTrussClipComp(const CagdSrfStruct *CompSrf,
const UserTrussClippingInfoStruct *ClipInfo,
CagdCrvStruct *TopLevelCrv,
CagdBType MarkSegs,
CagdBType BndrySegsOnly,
const UserTrussTolerancesStruct *Tol)
Description:
Clip a component of the truss lattice (can be beam, sphere, the side
plane between the beams, or a base-cap of a beam), according to the logic
prescribed by ClipInfo.
Parameters:
CompSrf: | The surface to clip.
|
---|
ClipInfo: | The information needed to clip the component.
|
---|
TopLevelCrv: | The top-level trimming loop for the component. If NULL,
a trimming loop containing the entire domain will be
added.
|
---|
MarkSegs: | A flag indicating whether to add subdivision markers (as
attributes) for the trimming curve. Used for creating
matching trimming curves for model construction.
|
---|
BndrySegsOnly: | A flag indicating whether the trimming curve subdivision
markers are required only on the boundary of the domain
of the surface. Ignored if MarkSegs is FALSE.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
TrimSrfStruct *: A trimmed surface representation of the clipped
component.
|
---|
See Also:
UserTrussClippingInfoStruct
UserTrussPrepBeamICrvs
UserTrussPrepBeamICrvsFast
UserTrussPrepBeamICrvsMatched
Keywords:
(truss_base.c:1961)
Prototype:
CagdCrvStruct *UserTrussCloseOneCrvLoopOppEdges(const CagdCrvStruct *Crv,
const CagdRType SrfDMin[2],
const CagdRType SrfDMax[2],
CagdBType AddOffet,
CagdRType Offset)
Description:
Attempts to from a pair of close loops out of a curve in the parametric
space of a surface, by connecting its start and end points to opposing
edges of the boundary of the surface. If the curve does not start and end
at opposing edges, the function returns NULL.
Parameters:
Crv: | The curve to close.
|
---|
SrfDMin, SrfDMax: | The boundaries of the parametric domain of the
surface.
|
---|
AddOffet: | If TRUE, the intersection loop is extended by Offset
outside the domain of the surface.
|
---|
Offset: | The offset by which to extend the loops (if AddOffset
is TRUE).
|
---|
Returned Value:
CagdCrvStruct *: The two intersection loops, if formed successfully.
Otherwise, NULL.
|
---|
See Also:
UserTrussICrvsCloseLoops
UserTrussCloseOneCrvLoopEdge
UserTrussCloseOneCrvLoopCorner
Keywords:
(truss_triv.c:331)
Prototype:
CagdSrfStruct *UserTrussComputeSideSrfs(const CagdSrfStruct *BeamSrf,
const CagdCrvStruct *ICrvs,
const IrtPlnType Pln1,
const IrtPlnType Pln2)
Description:
Constructs the side surface of a half-beam, given its base plane, and
the plane of another half-beam that intersects it. The side surface may be
split due to the intersection occurring at the start of the parametric
domain of the half-beam.
Parameters:
BeamSrf: | The outer surface of a half-beam.
|
---|
ICrvs: | The inersection contour of the current half-beam with another
half-beam.
|
---|
Pln1: | The base plane of the current half-beam.
|
---|
Pln2: | The base plane of the second half-beam.
|
---|
Returned Value:
CagdSrfStruct *: The side surface(s) between the current half-beam and
the second.
|
---|
Keywords:
(truss_gen.c:905)
Prototype:
IPObjectStruct *UserTrussConstructLatticeMain(
const IPObjectStruct *InObj,
UserTrussSpherePackParamsStruct *SpherePackParams,
UserTrussLatticeParamsStruct *TrussParams,
const UserTrussTolerancesStruct *Tol)
Description:
Constructs a truss lattice either from a set of points, or via sphere
packing. Additionally, a shell can be provided, which will be used for
guaranteeing that all the beams are inside the shell, or it can be
connected to the lattice by beams.
Parameters:
InObj: | A surface or polygonal model to fill with a truss
lattice via sphere packing, or a list of points from
which to construct the truss lattice.
|
---|
SpherePackParams: | The parameters for the sphere packing. Ignored if
InObj is a list of points.
|
---|
TrussParams: | The parameters for constructing the truss lattice.
connected.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
IPObjectStruct *: The resulting truss lattice.
|
---|
Keywords:
truss lattice
sphere packing
(truss_base.c:3322)
Prototype:
CagdSrfStruct *UserTrussCreateShellSrfConnections(
UserTrussNodeDefStruct *NodeDefs,
const CagdPType *ShellPts,
const CagdRType *ShellDists,
int NumPts,
CagdRType DistToConnect,
UserTrussNodeDefCallbacksStruct *Callbacks,
const CagdSrfStruct *ShellSrf,
TrimSrfStruct **TrimmedShellSrf,
const UserTrussTolerancesStruct *Tol)
Description:
Connects a truss lattice to a shell surface. This requires several
actions:
1. For each lattice node that is close to the shell, the beam that will
connect it to the shell is added.
2. The fillets that connect the shell surface to the beams are
constructed.
3. The shell surface is trimmed, to created holes where the fillets are
constructed.
This function modifies the array of UserTrussNodeDefStructs to include
the new beams, returns the trimmed shell surface via an output parameter,
and returns the fillets are a list of surfaces.
Parameters:
NodeDefs: | The lattice node definitions. Extra beams will be
added to the nodes that are close to the shell
surface.
|
---|
ShellPts: | The closest point on the shell surface for each
lattice node.
|
---|
ShellDists: | The minimum distance of each lattice node to the
shell surface.
|
---|
NumPts: | The number of lattice nodes.
|
---|
DistToConnect: | The maximum distance at which a lattice node will be
connected to the shell surface.
|
---|
Callbacks: | The struct that contains the callbacks for setting
the properties of the lattice beams.
|
---|
ShellSrf: | The shell surface.
|
---|
TrimmedShellSrf: | Output parameter: the shell surface, trimmed to
connect to the fillets.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
CagdSrfStruct *: The fillets that connect the shell surface to the beams
of the truss lattice, as a list of surfaces.
|
---|
See Also:
UserTrussPrepareBeamInfoWithShell
Keywords:
(truss_base.c:3891)
Prototype:
void UserTrussDefaultTol(UserTrussTolerancesStruct *Tol)
Description:
Sets the default tolerances in a UserTrussTolerancesStruct. These
tolerances are useful for most cases.
Parameters:
Tol: | The tolerances structure in which the values will be set.
|
---|
Returned Value:
Keywords:
(truss_base.c:2802)
Prototype:
void UserTrussFilterShortCrvs(CagdCrvStruct **Crvs,
CagdRType Threshold,
CagdBType SegOnly,
CagdBType WarnOnly)
Description:
Filters out curves shorter than some threshold, out of a given list of
curves. The length is approximated by the length of the control polyline.
Computed in place.
Parameters:
Crvs: | The list of curves to filter.
|
---|
Threshold: | The threshold for filtering out short curves.
|
---|
SegOnly: | If TRUE, linear curves are skipped.
|
---|
WarnOnly: | If TRUE, short curves are not actually deleted, and instead
a warning is printed. Used for debugging.
|
---|
Returned Value:
Keywords:
(truss_base.c:1508)
Prototype:
void UserTrussICrvsCloseLoops(const CagdSrfStruct *OrigSrf,
CagdCrvStruct **ICrvs,
const CagdRType SrfDMin[2],
const CagdRType SrfDMax[2],
const IrtPlnType Pln,
const CagdPType CylinderBasePt,
const CagdVType CylinderVec,
CagdRType CylinderR,
CagdBType UseCylinder,
CagdRType Tol,
CagdBType AddOffset,
CagdRType Offset)
Description:
Given a surface and a list of intersection curves, closes the curves
which start and end at the boundary, into loops. The closing of the loops
is performed as to guarantee that the trimming loop (as embedded on the
surface in E3 space) are ouside some given cylinder or below plane. Curves
which are already closed are ignored.
Parameters:
OrigSrf: | The surface which contains the intersection curves.
|
---|
ICrvs: | The list of intersetion curves to be closed into
loops. Used in-place.
|
---|
SrfDMin, SrfDMax: | The boundaries of the parametric domain of the
surface.
|
---|
Pln: | The plane below which the intersection loops should
be. Used only if UseCylinder is FALSE.
|
---|
CylinderBasePt: | The center of the base of the cylinder outside which
the intersection loops should be. Used only if
UseCylinder is TRUE.
|
---|
CylinderVec: | The direction vector of the cylinder. Used only if
UseCylinder is TRUE.
|
---|
CylinderR: | The radius of the cylinder. Used only if UseCylinder
is TRUE.
|
---|
UseCylinder: | If TRUE, the cylinder information will be used for
closing the loops. Othewise, the plane is used.
|
---|
Tol: | The tolerances for testing on which side of the plane
the loop is.
|
---|
AddOffset: | If TRUE, the intersection loop is extended by Offset
outside the domain of the surface. Used for
improving the robustness of the boolean operations on
the loops.
|
---|
Offset: | The offset by which to extend the loops (if AddOffset
is TRUE).
|
---|
Returned Value:
See Also:
UserTrussCloseOneCrvLoopEdge
UserTrussCloseOneCrvLoopCorner
UserTrussCloseOneCrvLoopOppEdges
Keywords:
(truss_gen.c:321)
Prototype:
IPObjectStruct *UserTrussLatticeWithQualityInfo(
const CagdPType *Pts,
int NumPts,
CagdRType DistToConnect,
UserTrussNodeDefCallbacksStruct *Callbacks,
const CagdRType *QuantizationVector,
const UserTrussTolerancesStruct *Tol)
Description:
Constructs a trimmed-surface truss lattice from a given set of lattice
node ponits. The lattice (assumed to be the result of sphere packing) is
marked according to its quality, with shorter beams being better than long
beams (this indicates that the lattice is closer to a "perfect" FCC or HCP
lattice). The quality information is quantized to finite number of levels,
according to a given quantization vector.
The resulting object is a list, with the first object containing all the
lattice nodes (spheres), and the rest of the objects contain the beams
the beams that correspond to each quantization level.
Parameters:
Pts: | The center points of the lattice nodes.
|
---|
NumPts: | The number of lattice nodes.
|
---|
DistToConnect: | The maximum distance at which points will be
connected.
|
---|
Callbacks: | The struct that contains the callbacks for setting
the properties of the lattice beams.
|
---|
QuantizationVector: | The quantization vector for estimating the lattice
quality. Must contain values between 0 and 1, and
end with 1. The values indicate the range of beam
lengths, from the shortest.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
IPObjectStruct *: The resulting truss lattice.
|
---|
See Also:
UserTrussTrimmedLatticeWithShell
UserTrussLatticeWithQualityInfo
UserTrussTrivLattice
Keywords:
truss lattice
sphere packing
(truss_mdl.c:825)
Prototype:
TrimSrfStruct *UserTrussMdlPostProcess(TrimSrfStruct *TSrfs,
const UserTrussTolerancesStruct *Tol)
Description:
Processes a truss lattice node and half-beams system into a geometry
that can be converted into a model. Assuming the original trimmed surfaces
were constructed using UserTrussPrepBeamICrvsMatched, the resulting
trimmed surfaces are guaranteed to have matching trimming curve segments
at all the contacts between the sphere and the beams, and between the
beams that intersect with each other.
Parameters:
TSrfs: | The list of trimmed surfaces that form the node and half-beams.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
TrimSrfStruct *: The node and half-beams, as matching trimmed surfaces.
|
---|
See Also:
UserTrussPrepBeamICrvsMatched
Keywords:
truss lattice
model
3D printing
(truss_base.c:3864)
Prototype:
void UserTrussNodeDefCleanup(UserTrussNodeDefStruct *NodeDef)
Description:
Frees the internal structures of a UserTrussNodeDefStruct. Does not free
the UserTrussNodeDefStruct itself, as it is meant to be used in an array.
Parameters:
NodeDef: | The lattice node definition struct.
|
---|
Returned Value:
Keywords:
(truss_base.c:627)
Prototype:
void UserTrussNodeSrfs(CagdRType NodeRadius,
const CagdRType *BeamRadii,
const CagdRType *BeamFilletRadii,
const CagdRType *BeamFilletHeights,
const CagdVType *BeamDirections,
const CagdRType *BeamHeights,
int NumBeams,
CagdBType MatchTCrvs,
CagdBType ForTriv,
CagdRType ExtendLength,
CagdSrfStruct **Sphere,
CagdSrfStruct **Beams,
CagdSrfStruct **BeamTopCaps,
CagdSrfStruct **BeamBaseCaps,
CagdSrfStruct **FilletCylinders,
CagdPType *BeamCenterPts,
IrtPlnType *AllPlns,
CagdBType *BeamsUniform)
Description:
Constructs all the surfaces of a truss lattice node and its half-beams,
without trimming them. Also constructs the auxiliary geometry needed for
trivariate lattice nodes, if required.
Parameters:
NodeRadius: | The radius of the sphere at the center of the lattice
node.
|
---|
BeamRadii: | The radius of each of the half-beams of the node.
|
---|
BeamFilletRadii: | The radius of each of the fillets of the node.
|
---|
BeamFilletHeights: | he height of each of the fillets of the node.
|
---|
BeamDirections: | The directions of the half-beams leaving the node.
|
---|
BeamHeights: | The heights of the half-beams of the node.
|
---|
NumBeams: | The number of beams leaving the node.
|
---|
MatchTCrvs: | A flag indicating whether the trimming curves of the
should be matched (used for converting the truss
lattice into a model).
|
---|
ForTriv: | A flag indicating whether to construct the auxiliary
geometry for trivariate lattice nodes.
|
---|
ExtendLength: | How much to extend the beam.
|
---|
Sphere: | Out parameter: the sphere at the center of the node.
|
---|
Beams: | Out parameter: The half-beams of the lattice node.
|
---|
BeamTopCaps: | Out parameter: the top caps of the beams (trivariate
only).
|
---|
BeamBaseCaps: | Out parameter: the base caps of the beams
(trivariate only).
|
---|
FilletCylinders: | Out parameter: cylinders that intersect the sphere
at its contact curves with the fillets (only if
MatchTCrvs is TRUE).
|
---|
BeamCenterPts: | Out parameter: kernel points at the centers of the
beams (trivariate only).
|
---|
AllPlns: | Out parameter: the planes containing the bases of
fillets. Used for trimming the beams and the sphere.
|
---|
BeamsUniform: | Out parameter: assigned TRUE if all the beams are of
uniform shape (same radius, fillet radius and fillet
height).
|
---|
Returned Value:
See Also:
UserTrussTrimmedNode
LatticeConstructNodeTriv
Keywords:
(truss_base.c:2268)
Prototype:
void UserTrussPrepBeamICrvsFast(UserTrussClipAgainstBeamsInfoStruct *ClipInfo,
CagdBType DoComputeSideSrfs,
CagdBType DoAssignIds,
const UserTrussTolerancesStruct *Tol)
Description:
Prepare the clipping information for clipping the beams of the truss
lattice. This function assumes that all the beams have a uniform shape
(radius, filletting height and filleting radius), and computes the
intersections as surface-plane intersections, which is faster than SSI.
Parameters:
ClipInfo: | The clipping information structure to be filled.
|
---|
DoComputeSideSrfs: | A flag indicating whether to compute the side
surfaces for trivariate truss construction.
|
---|
DoAssignIds: | A flag indicating whether to attach attributrs to
intersection loops, indicating the index of the beam
which caused the intersection.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
See Also:
UserTrussPrepBeamICrvs
UserTrussPrepBeamICrvsMatched
UserTrussCleanBeamICrvs
Keywords:
(truss_mdl.c:82)
Prototype:
void UserTrussPrepBeamICrvsMatched(
UserTrussClipAgainstBeamsInfoStruct *SphereClipInfo,
UserTrussClipAgainstBeamsInfoStruct *BeamsClipInfo,
CagdSrfStruct *SphereSrf,
const IrtPlnType *SphereClipPlns,
const CagdSrfStruct **FilletCylinders,
CagdCrvStruct **BeamTopLevelCrvs,
const UserTrussTolerancesStruct *Tol)
Description:
Prepare the clipping information for clipping the beams of the truss
lattice. This function computes the intersections using the SSI algorithm,
both for sphere-beam and beam-beam intersections, and guarantees that the
parametrizations of the resulting intersection curves match each other.
This is needed for converting the truss lattice into models (e.g. for 3D
printing).
Parameters:
SphereClipInfo: | The clipping information structure of the sphere, to
be filled.
|
---|
BeamsClipInfo: | The clipping information structure of the beams, to
be filled.
|
---|
SphereSrf: | The sphere at the center of the lattice node.
|
---|
SphereClipPlns: | The planes that contain the contact curves of the
sphere with the beams. These are used for closing the
intersection contours into loops.
|
---|
FilletCylinders: | For each beam, a cylinder with the same orientation
as the beam, and the radius of the fillet. These are
used for computing the intersections with the sphere.
|
---|
BeamTopLevelCrvs: | Out parameter: the top-level trimming loops of the
beams.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
See Also:
UserTrussPrepBeamICrvs
UserTrussPrepBeamICrvsFast
UserTrussCleanBeamICrvs
Keywords:
(truss_base.c:298)
Prototype:
UserTrussNodeDefStruct *UserTrussPrepareBeamInfo(
const CagdPType *Pts,
int NumPts,
CagdRType DistToConnect,
UserTrussNodeDefCallbacksStruct *Callbacks,
CagdBType Normalize)
Description:
Fills in the information on all half-beams leaving each node in the
truss lattice. This includes the beam direction vectors, beam radii, beam
half-heights, and filletting information. Also, sets the adjacency matrix
for the lattice nodes.
The beams are constructed between each two nodes with a distance of at
most DistToConnect from each other, and guaranteed to be non-intersecting.
The parameters of the beams (radius, filletting radius, filletting
height) are set by a callback function, which needs to be provided.
Parameters:
Pts: | The center points of the lattice nodes.
|
---|
NumPts: | The number of lattice nodes.
|
---|
DistToConnect: | The maximum distance at which points will be
connected.
|
---|
Callbacks: | The struct that contains the callbacks for setting
the properties of the lattice beams.
|
---|
Normalize: | If TRUE, the beam direction vectors will be
normalized.
|
---|
Returned Value:
UserTrussNodeDefStruct *: The definitions of the nodes to create (array
of length NumPts).
|
---|
See Also:
UserTrussPrepareBeamInfoWithShell
Keywords:
(truss_base.c:3015)
Prototype:
UserTrussNodeDefStruct *UserTrussPrepareBeamInfoWithShell(
const CagdPType *Pts,
int NumPts,
CagdRType DistToConnect,
UserTrussNodeDefCallbacksStruct *Callbacks,
CagdBType Normalize,
const IPObjectStruct *ShellObj,
const UserTrussTolerancesStruct *Tol)
Description:
Fills in the information on all half-beams leaving each node in the
truss lattice. This includes the beam direction vectors, beam radii, beam
half-heights, and filletting information. Also, sets the adjacency matrix
for the lattice nodes.
The beams are constructed between each two nodes with a distance of at
most DistToConnect from each other, and guaranteed not to intersect with
each other, or with the shell of the model (if provided).
The parameters of the beams (radius, filletting radius, filletting
height) are set by a callback function, which needs to be provided.
Parameters:
Pts: | The center points of the lattice nodes.
|
---|
NumPts: | The number of lattice nodes.
|
---|
DistToConnect: | The maximum distance at which points will be
connected.
|
---|
Callbacks: | The struct that contains the callbacks for setting
the properties of the lattice beams.
|
---|
Normalize: | If TRUE, the beam direction vectors will be
normalized.
|
---|
ShellObj: | The shell of the model. Beams that intersect with
the shell will be deleted. Can be either a surface
a polygonal model.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
UserTrussNodeDefStruct *: The definitions of the nodes to create (array
of length NumPts).
|
---|
See Also:
UserTrussPrepareBeamInfo
Keywords:
(truss_base.c:4205)
Prototype:
void UserTrussSetConstBeamCallbacks(
UserTrussConstBeamWidthStruct *BeamData,
UserTrussNodeDefCallbacksStruct *Callbacks)
Description:
Sets the callbacks functions for constructing a truss lattice with
constant beam width.
Parameters:
BeamData: | The beam parameters struct (containing the beam radius,
filletting radius and filletting height, etc.).
|
---|
Callbacks: | The callbacks struct, where the functions will be
assigned.
|
---|
Returned Value:
See Also:
UserTrussSetGradedBeamCallbacks
Keywords:
(truss_base.c:4286)
Prototype:
void UserTrussSetCustomBeamCallbacks(
UserTrussBeamInfoPrepFuncType PrepCallback,
UserTrussBeamInfoFuncType SetDataCallback,
UserTrussBeamInfoCleanFuncType CleanupCallback,
void *ExtraData,
UserTrussNodeDefCallbacksStruct *Callbacks)
Description:
Sets the callbacks for constructing a truss lattice with custom
functions for the sphere radius, beam radius, and filleting radius and
height.
Parameters:
PrepCallback: | The callback function which will be called before the
shape data of the lattice nodes is set.
|
---|
SetDataCallback: | The callback function which will be called for setting
the shape data of the sphere and each of the beams.
|
---|
CleanupCallback: | The callback function which will be called after the
shape data of the lattice nodes is set.
|
---|
ExtraData: | The extra data that is passed to PrepCallback.
|
---|
Callbacks: | The callbacks struct, where the functions will be
assigned.
|
---|
Returned Value:
See Also:
UserTrussSetConstBeamCallbacks
UserTrussSetGradedBeamCallbacks
Keywords:
(truss_base.c:4242)
Prototype:
void UserTrussSetGradedBeamCallbacks(
UserTrussGradedBeamWidthStruct *GradedBeamData,
UserTrussNodeDefCallbacksStruct *Callbacks)
Description:
Sets the callbacks functions for constructing a truss lattice with
graded beam width.
Parameters:
GradedBeamData: | The beam parameters struct (containing the vector along
which the beams are to be graded, as well as the start
and values for the beam radius, filletting radius, and
filletting height).
|
---|
Callbacks: | The callbacks struct, where the functions will be
assigned.
|
---|
Returned Value:
See Also:
UserTrussSetConstBeamCallbacks
Keywords:
(truss_base.c:2616)
Prototype:
CagdCrvStruct *UserTrussSplitCrvTo2CoordsCrvs(const CagdCrvStruct *Crv,
int Crv1Coords,
CagdBType NewIsRational)
Description:
Splits the coordinates of a curve into two curves, the first containing
the first Crv1Coords coordinates, and the second contains the rest of the
coordinates.
Parameters:
Crv: | The curve to split.
|
---|
Crv1Coords: | The number of coordinates to copy to the first curve.
|
---|
NewIsRational: | If TRUE, the newly curves will be created as rational,
the weight of the original curve (if exist), or uniform
(if not).
|
---|
Returned Value:
CagdCrvStruct *: The two split curves.
|
---|
Keywords:
(truss_gen.c:90)
Prototype:
IPObjectStruct *UserTrussTrimmedLattice(
const CagdPType *Pts,
int NumPts,
CagdRType DistToConnect,
UserTrussNodeDefCallbacksStruct *Callbacks,
CagdBType PrepForMdl,
CagdBType MultiObj,
const UserTrussTolerancesStruct *Tol)
Description:
Constructs a trimmed-surface truss lattice from a given set of lattice
node ponits. The lattice can be returned as a single object conatining all
the trimmed surfaces in a single object, or as a list object, with each
node and half-beams system in a separate object.
Parameters:
Pts: | The center points of the lattice nodes.
|
---|
NumPts: | The number of lattice nodes.
|
---|
DistToConnect: | The maximum distance at which points will be
connected.
|
---|
Callbacks: | The struct that contains the callbacks for setting
the properties of the lattice beams.
|
---|
PrepForMdl: | If TRUE, the truss lattice will be constructed with
matching trimming loops, to allow conversion into a
closed model.
|
---|
MultiObj: | If TRUE, each node and half-beams system will be
contained in a separate object.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
IPObjectStruct *: The resulting truss lattice.
|
---|
See Also:
UserTrussTrimmedLatticeWithShell
UserTrussLatticeWithQualityInfo
UserTrussTrivLattice
Keywords:
truss lattice
sphere packing
(truss_gen.c:202)
Prototype:
IPObjectStruct *UserTrussTrimmedLatticeWithShell(
const CagdPType *Pts,
const CagdPType *ShellPts,
CagdRType *ShellDists,
int NumPts,
CagdRType DistToConnect,
UserTrussNodeDefCallbacksStruct *Callbacks,
CagdBType PruneOnly,
const IPObjectStruct *ShellObj,
CagdBType PrepForMdl,
const UserTrussTolerancesStruct *Tol)
Description:
Constructs a trimmed-surface truss lattice from a given set of lattice
node ponits, and an outer shell. The lattice is constructed such as all
the beams are inside the shell. Also, if the shell is a B-spline surface,
it can be connected to the lattice by beams.
The resulting lattice can be returned as a list object with the shell
and its connections, and each lattice node and half-beams system in a
a separate object.
Parameters:
Pts: | The center points of the lattice nodes.
|
---|
ShellPts: | The closest point on the shell surface for each
lattice node.
|
---|
ShellDists: | The minimum distance of each lattice node to the
|
---|
NumPts: | The number of lattice nodes.
|
---|
DistToConnect: | The maximum distance at which points will be
connected.
|
---|
Callbacks: | The struct that contains the callbacks for setting
the properties of the lattice beams.
|
---|
PruneOnly: | If TRUE, then the shell will only be used for
removing beams that go outside the shell.
If FALSE, and the shell is a B-spline surface, then
shell will be connected to the truss lattice.
|
---|
ShellObj: | The shell object. Can be either a B-spline or
polygonal model.
|
---|
PrepForMdl: | If TRUE, the truss lattice will be constructed with
matching trimming loops, to allow conversion into a
closed model.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
IPObjectStruct *: The resulting truss lattice.
|
---|
See Also:
UserTrussTrimmedLattice
UserTrussLatticeWithQualityInfo
UserTrussTrivLattice
Keywords:
truss lattice
sphere packing
(truss_base.c:360)
Prototype:
TrimSrfStruct *UserTrussTrimmedNode(CagdRType NodeRadius,
const CagdRType *BeamRadii,
const CagdRType *BeamFilletRadii,
const CagdRType *BeamFilletHeights,
const CagdVType *BeamDirections,
const CagdRType *BeamHeights,
int NumBeams,
CagdBType MatchTCrvs,
CagdRType ExtendLength,
const UserTrussTolerancesStruct *Tol)
Description:
Constructs a single truss lattice node with its half-beams.
Parameters:
NodeRadius: | The radius of the sphere at the center of the lattice
node.
|
---|
BeamRadii: | The radius of each of the half-beams of the node.
|
---|
BeamFilletRadii: | The radius of each of the fillets of the node.
|
---|
BeamFilletHeights: | he height of each of the fillets of the node.
|
---|
BeamDirections: | The directions of the half-beams leaving the node.
|
---|
BeamHeights: | The heights of the half-beams of the node.
|
---|
NumBeams: | The number of beams leaving the node.
|
---|
MatchTCrvs: | A flag indicating whether the trimming curves of the
should be matched (used for converting the truss
lattice into a model).
|
---|
ExtendLength: | How much to extend the beam.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
TrimSrfStruct *: A node and half-beams system, represented as a list of
trimmed surfaces.
|
---|
See Also:
LatticeConstructNodeTriv
Keywords:
(truss_triv.c:852)
Prototype:
IPObjectStruct *UserTrussTrivLattice(
const CagdPType *Pts,
int NumPts,
CagdRType DistToConnect,
UserTrussNodeDefCallbacksStruct *Callbacks,
const UserTrussTolerancesStruct *Tol)
Description:
Constructs a trivariate truss lattice from a given set of lattice node
ponits. The lattice is returned as a list object, with each node and
half-beams system in a separate object.
Parameters:
Pts: | The center points of the lattice nodes.
|
---|
NumPts: | The number of lattice nodes.
|
---|
DistToConnect: | The maximum distance at which points will be
connected.
|
---|
Callbacks: | The struct that contains the callbacks for setting
the properties of the lattice beams.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
IPObjectStruct *: The resulting truss lattice.
|
---|
See Also:
UserTrussTrimmedLattice
UserTrussTrimmedLatticeWithShell
UserTrussLatticeWithQualityInfo
Keywords:
truss lattice
sphere packing
(truss_triv.c:928)
Prototype:
IPObjectStruct *UserTrussTrivLatticeWithShell(
const CagdPType *Pts,
const CagdPType *ShellPts,
CagdRType *ShellDists,
int NumPts,
CagdRType DistToConnect,
UserTrussNodeDefCallbacksStruct *Callbacks,
const IPObjectStruct *ShellObj,
const UserTrussTolerancesStruct *Tol)
Description:
Constructs a trivariate truss lattice from a given set of lattice node
ponits, and an outer shell. The lattice is constructed such as all the
beams are inside the shell. The lattice is returned as a list object, with
each node and half-beams system in a separate object.
Parameters:
Pts: | The center points of the lattice nodes.
|
---|
ShellPts: | The closest point on the shell surface for each
lattice node.
|
---|
ShellDists: | The minimum distance of each lattice node to the
|
---|
NumPts: | The number of lattice nodes.
|
---|
DistToConnect: | The maximum distance at which points will be
connected.
|
---|
Callbacks: | The struct that contains the callbacks for setting
the properties of the lattice beams.
|
---|
ShellObj: | The shell object. Can be either a B-spline or
polygonal model.
|
---|
Tol: | The tolerances structure of the truss lattice.
|
---|
Returned Value:
IPObjectStruct *: The resulting truss lattice.
|
---|
See Also:
UserTrussTrimmedLatticeWithShell
UserTrussTrivLattice
Keywords:
truss lattice
sphere packing
(zcollide.c:44)
Prototype:
IrtRType UserTwoObjMaxZRelMotion(IPObjectStruct *PObj1,
IPObjectStruct *PObj2,
IrtRType FineNess,
int NumIters)
Description:
Computes the maximal Z motion to move PObj2 down (-Z direction) so that
it does not intersect PObj1. Second object is converted to its Bbox.
Parameters:
PObj1: | First static object to place PObj2 on.
|
---|
PObj2: | Second dynamic object that is to be moved down (-Z direction)
until it is tangent to PObj1.
|
---|
FineNess: | Of polygonal approximation of PObj1.
|
---|
NumIters: | In the bisectioning of collision's test. 10 is a good start.
|
---|
Returned Value:
IrtRType: Maximal Z motion possible, or IRIT_INFNTY if no collision
or error.
|
---|
Keywords:
(visible.c:197)
Prototype:
IPObjectStruct *UserViewingConeSrfDomains(const CagdSrfStruct *Srf,
const CagdSrfStruct *NSrf,
const IPPolygonStruct *ConeDirs,
CagdRType SubdivTol,
CagdRType ConeAngle,
CagdRType Euclidean)
Description:
Computes the domain in given surface Srf that is inside the given cones
of directions ConeDirs and opening angle ConeAngle.
Parameters:
Srf: | To compute its visibility.
|
---|
NSrf: | The normal surface computed symbollically for Srf.
|
---|
ConeDirs: | Direction of cone's axes.
|
---|
SubdivTol: | Of Cone - normal surface intersection, for subdivision
approximation accuracy.
|
---|
ConeAngle: | The opening angle of the cone, in Radians.
|
---|
Euclidean: | Contours are in Euclidean (TRUE) or parametric (FALSE)
space of Srf.
|
---|
Returned Value:
IPObjectStruct *: Set of piecewise linear contours, approximating the
intersections of the normal viewing cones and the
original surface.
|
---|
See Also:
UserVisibilityClassify
UserSrfVisibConeDecomp
Keywords:
(visible.c:127)
Prototype:
TrimSrfStruct *UserVisibilityClassify(const IPObjectStruct *SclrSrf,
TrimSrfStruct *TrimmedSrfs)
Description:
Given a decomposition of surface Srf into a set of TrimmedSrfs into
regions that are inside the normal viewing cone as prescribed by SclrSrf,
eliminate all regions (trimmed surfaces) that are outside the viewing
cone in the given list, TrimmedSrfs.
Parameters:
SclrSrf: | The scalar surface computed symbollically in
UserViewingConeSrfDomains, forming this decomosition.
|
---|
TrimmedSrfs: | To verify they are within the viewing code of ViewingDir.
Trimmed surfaces inside this list that are outside the
viewing cone are eliminated, in place.
|
---|
Returned Value:
TrimSrfStruct *: The trimmed regions inside the viewing cone, as a
subset of TrimmedSrfs.
|
---|
See Also:
UserViewingConeSrfDomains
UserSrfVisibConeDecomp
Keywords:
(wire_dither.c:551)
Prototype:
IPObjectStruct *UserWDDitherCombiBW(IritImgPrcssImgStruct *Image0,
IritImgPrcssImgStruct *Image1,
int NumberOfLines,
int NumberOfPins,
float LineIntensity,
IritImgPrcssImgStruct **Projection0,
IritImgPrcssImgStruct **Projection1,
float Fairness0,
float Fairness1,
float FeatureImportance)
Description:
Wrapper to the dithering with lines function that draws the images in
black lines only, Same as calling the original function with (0, 0, 0, 1)
as the only available color.
Parameters:
Image0: | First image to dither.
|
---|
Image1: | Second image to dither.
|
---|
NumberOfLines: | Number of lines to dither with.
|
---|
NumberOfPins: | Number of pins on each edge of the cube.
|
---|
LineIntensity: | The intensity of the drawn lines (relevant in
projections).
|
---|
Projection0: | Path for saving projection of the wires on the XY plane.
|
---|
Projection1: | Path for saving projection of the wires on the ZY plane.
|
---|
Fairness0: | Fairness score multiplier for image0.
|
---|
Fairness1: | Fairness score multiplier for image1.
|
---|
FeatureImportance: | Score multiplier for pixels on the edges.
|
---|
Returned Value:
IPObjectStruct *: Wires object.
|
---|
Keywords:
Straight Lines
Dither With Lines
Dithering
(wire_dither.c:604)
Prototype:
IPObjectStruct *UserWDDitherCombiRGB(IritImgPrcssImgStruct *Image0,
IritImgPrcssImgStruct *Image1,
int NumberOfLines,
int NumberOfPins,
float LineIntensity,
IritImgPrcssImgStruct **Projection0,
IritImgPrcssImgStruct **Projection1,
float Fairness0,
float Fairness1,
float FeatureImportance)
Description:
Wrapper to the dithering with lines function that draws the images in
Red, Green and Blue lines only, Same as calling the original function,
with (1, 0, 0, 1), (0, 1, 0, 1), (0, 0, 1, 1) Colors only.
Parameters:
Image0: | First image to dither.
|
---|
Image1: | Second image to dither.
|
---|
NumberOfLines: | Number of lines to dither with.
|
---|
NumberOfPins: | Number of pins on each edge of the cube.
|
---|
LineIntensity: | The intensity of the drawn lines (relevant in
projections).
|
---|
Projection0: | Variable to hold the projected image on the XY plane.
|
---|
Projection1: | Variable to hold the projected image on the YZ plane.
|
---|
Fairness0: | Fairness score multiplier for image0.
|
---|
Fairness1: | Fairness score multiplier for image1.
|
---|
FeatureImportance: | Score multiplier for the automatic edge detection
|
---|
Returned Value:
IPObjectStruct *: Wires object.
|
---|
Keywords:
Straight Lines
Dither With Lines
Dithering
(wire_dither.c:664)
Prototype:
IPObjectStruct *UserWDDitherStochasticBW(IritImgPrcssImgStruct *Image0,
IritImgPrcssImgStruct *Image1,
int NumberOfLines,
int NumberOfPins,
int NumberOfRandomTrials,
float LineIntensity,
IritImgPrcssImgStruct **Projection0,
IritImgPrcssImgStruct **Projection1,
float Fairness0,
float Fairness1,
int BoundWireLength,
float FeatureImportance)
Description:
Wrapper to the dithering with lines function of one/two given images.
Parameters:
Image0: | First image to dither.
|
---|
Image1: | Second image to dither.
|
---|
NumberOfLines: | Number of lines to dither with.
|
---|
NumberOfPins: | Number of pins on each edge of the cube.
|
---|
NumberOfRandomTrials: | Number of random trials to perform, per wire.
|
---|
LineIntensity: | The intensity of the drawn lines (relevant in
projections).
|
---|
Projection0: | Path for saving projection of the wires on the XY plane.
|
---|
Projection1: | Path for saving projection of the wires on the ZY plane.
|
---|
Fairness0: | Fairness score multiplier for image0.
|
---|
Fairness1: | Fairness score multiplier for image1.
|
---|
BoundWireLength: | n the stochastic mode whether to use lines that do'nt
necessarily lay on the cube surface.
|
---|
FeatureImportance: | Score multiplier for the automatic edge detection.
|
---|
Returned Value:
IPObjectStruct *: Wires object.
|
---|
Keywords:
Straight Lines
Dither With Lines
Dithering
(wire_dither.c:721)
Prototype:
IPObjectStruct *UserWDDitherStochasticRGB(IritImgPrcssImgStruct *Image0,
IritImgPrcssImgStruct *Image1,
int NumberOfLines,
int NumberOfPins,
int NumberOfRandomTrials,
float LineIntensity,
IritImgPrcssImgStruct **Projection0,
IritImgPrcssImgStruct **Projection1,
float Fairness0,
float Fairness1,
int BoundWireLength,
float FeatureImportance)
Description:
Wrapper to the dithering with lines function of one/two given images.
Parameters:
Image0: | First image to dither.
|
---|
Image1: | Second image to dither.
|
---|
NumberOfLines: | Number of lines to dither with.
|
---|
NumberOfPins: | Number of pins on each edge of the cube.
|
---|
NumberOfRandomTrials: | Number of random trials to perform, per wire.
|
---|
LineIntensity: | The intensity of the drawn lines (relevant in
projections).
|
---|
Projection0: | Path for saving projection of the wires on the XY plane.
|
---|
Projection1: | Path for saving projection of the wires on the ZY plane.
|
---|
Fairness0: | Fairness score multiplier for image0.
|
---|
Fairness1: | Fairness score multiplier for image1.
|
---|
BoundWireLength: | n the stochastic mode whether to use lines that do'nt
necessarily lay on the cube surface.
|
---|
FeatureImportance: | Score multiplier for the automatic edge detection.
|
---|
Returned Value:
IPObjectStruct *: Wires object.
|
---|
Keywords:
Straight Lines
Dither With Lines
Dithering
(textwarp.c:65)
Prototype:
IPObjectStruct *UserWarpTextOnSurface(CagdSrfStruct *Srf,
const char *Txt,
IrtRType HSpace,
IrtRType VBase,
IrtRType VTop,
IrtRType Ligatures)
Description:
Warps the given text, using the current loaded font, in Bezier form in
surface Srf using composition. The characters of Txt are laid one after
the other until the entire surface is filled horizontally, or characters
in Txt are exhausted.
The characters are scaled to fit VBase to VTop of the height (v)
direction of the parametric domain of Srf, for the letter 'A'.
Parameters:
Srf: | Surface to warp the text Txt along. The text is laid
along the u axis with the v axis being the height.
|
---|
Txt: | Text to warp inside Srf.
|
---|
HSpace: | Horizontal space between characters.
|
---|
VBase, VTop: | Minimal and maximal fraction of height for regular
characters. Measured on the letter 'A'.
|
---|
Ligatures: | If non zero, amount of ligatures' contraction between
adjacent characters.
|
---|
Returned Value:
IPObjectStruct *: List object of warped text, one object per character,
each character is a list of Bezier curves. NULL if error.
|
---|
See Also:
GMLoadTextFont
GMMakeTextGeometry
SymbComposeSrfCrv
Keywords:
(fntelem1.c:1434)
Prototype:
void main(void)
Description:
Test routines for the FE code.
Parameters:
Returned Value:
Keywords: