IntrSrfHierarchyFreePreprocess

(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:

void


See Also:

IntrSrfHierarchyPreprocessSrf IntrSrfHierarchyTestRay IntrSrfHierarchyTestPt

Keywords:

ray surface intersection


IntrSrfHierarchyPreprocessSrf

(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


IntrSrfHierarchyTestPt

(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


IntrSrfHierarchyTestRay

(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


IrtImgScaleImage

(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:




User2PolyMeshRoundEdge

(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:




User3DDither2Images

(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:




User3DDither3Images

(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:




User3DDither3Images2

(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:




User3DDitherSetXYTranslations

(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:




User3DMicroBlobsCreateRandomMatrix

(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:




User3DMicroBlobsCreateRandomVector

(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:

int *: Created vector.


See Also:

User3DMicroBlobsCreateRandomMatrix

Keywords:




User3DMicroBlobsFrom3Images

(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:




User3DMicroBlobsTiling

(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:




User3DMicroBlobsTiling2

(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:




UserAMFiber3AxisFreeFragments

(am3axis_frag_split.c:85)

Prototype:

  void UserAMFiber3AxisFreeFragments(UserAMFiber3AxisFragStruct *Fragments)


Description:

Frees a fragments struct.

Parameters:

Fragments: truct to free.


Returned Value:

void


See Also:



Keywords:




UserAMFiber3AxisFreeTValList

(am3axis_frag_split.c:323)

Prototype:

  void UserAMFiber3AxisFreeTValList(UserAMFiber3AxisTValListStruct *List)


Description:

Free a list of t values.

Parameters:

List: The list to free.


Returned Value:

void.


See Also:



Keywords:




UserAMFiber3AxisGetBBoxMaxTVals

(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:




UserAMFiber3AxisGetCrvsFromTValArray

(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:

void


See Also:



Keywords:




UserAMFiber3AxisGetFragmentCrvs

(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:




UserAMFiber3AxisGetKnotsTVals

(am3axis_frag_split.c:184)

Prototype:

  UserAMFiber3AxisTValListStruct *UserAMFiber3AxisGetKnotsTVals(
                                                       const CagdCrvStruct *Crv)


Description:

Get a List of t (paramteric) values at the curve knots.

Parameters:

Crv: The curve.


Returned Value:

UserAMFiber3AxisTValListStruct *: A list of the requested t values.


See Also:



Keywords:




UserAMFiber3AxisGetMonotoneTVals

(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:

Crv: The curve.


Returned Value:

UserAMFiber3AxisTValListStruct *: A list of the requested t values.


See Also:



Keywords:




UserAMFiber3AxisGetTValFragments

(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:




UserAMFiber3AxisMergeTValLists

(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:




UserAMFiber3AxisOrderCrvs

(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:




UserAMFiber3AxisSaveCrvsAsSweeps

(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:

void


See Also:



Keywords:




UserAMFiber3AxisSubCrvs

(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:




UserBeltCreate

(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:




UserCABreakLiNCrvsAtAngularDev

(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:




UserCAMergeCrvsAtAngularDev

(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:




UserClipSrfAtPlane

(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:




UserCntrEvalToE3

(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:




UserCntrSrfWithPlane

(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


UserCnvrtCagdPolyline2IritPolyline

(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:




UserCnvrtCagdPolylines2IritPolylines

(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:




UserCnvrtIritPolyline2CagdPolyline

(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:




UserCnvrtLinBspCrv2IritPolyline

(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:




UserCnvrtLinBspCrvs2IritPolylines

(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:




UserCnvrtObjApproxLowOrderBzr

(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:

void


Keywords:




UserConservativeClipSrfByPlane

(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:




UserCrvAngleMap

(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:




UserCrvArngmnt

(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:




UserCrvArngmntClassifyConnectedRegions

(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:




UserCrvArngmntCopy

(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:




UserCrvArngmntCreate

(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:




UserCrvArngmntFilterDups

(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:




UserCrvArngmntFilterTans

(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:




UserCrvArngmntFree

(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:




UserCrvArngmntGetCurves

(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:




UserCrvArngmntIsContained

(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:




UserCrvArngmntIsContained2

(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:




UserCrvArngmntLinearCrvsFitC1

(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:




UserCrvArngmntOutput

(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:




UserCrvArngmntPrepEval

(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:




UserCrvArngmntProcessEndPts

(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:




UserCrvArngmntProcessIntersections

(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:




UserCrvArngmntProcessSpecialPts

(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:




UserCrvArngmntRegion2Curves

(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:




UserCrvArngmntRegions2Curves

(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:




UserCrvArngmntRegionsTopology

(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:




UserCrvArngmntReport

(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:

void


See Also:



Keywords:




UserCrvArngmntSplitAtPts

(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:




UserCrvCrvtrByOneCtlPt

(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


UserCrvOMDiagExtreme

(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:




UserCrvViewMap

(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:




UserCrvVisibleRegions

(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:




UserCrvs2DBooleans

(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:




UserDDMPolysOverPolys

(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:




UserDDMPolysOverSrf

(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:




UserDDMPolysOverTrimmedSrf

(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:




UserDescribeError

(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


UserDexelColorTriangles

(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:




UserDexelDxClearGrid

(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:

void


See Also:

UserDexelDxGridFree

Keywords:




UserDexelDxGridCopy

(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:

void


See Also:

UserDexelGridNew

Keywords:




UserDexelDxGridFree

(dexels.c:425)

Prototype:

  void UserDexelDxGridFree(UserDexelDxGridStruct *DxGrid)


Description:

Frees the input grid.

Parameters:

DxGrid: The grid to free.


Returned Value:

void


See Also:

UserDexelGridNew UserDexelDxClearGrid

Keywords:




UserDexelDxGridSubtract

(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:

void


See Also:

UserDexelDxGridUnion

Keywords:




UserDexelDxGridUnion

(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:

void


See Also:

UserDexelDxGridSubtract

Keywords:




UserDexelGetDexelGridEnvelope0D

(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:




UserDexelGetDexelGridEnvelope1D

(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:




UserDexelGridNew

(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:




UserDexelInitStock

(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:

void


See Also:

UserDexelInitStockSrf UserDexelInitStockSrf2

Keywords:




UserDexelInitStockSrf

(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:

void


See Also:

UserDexelInitStockSrf2 UserDexelInitStock

Keywords:




UserDexelInitStockSrf2

(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:

void


See Also:

UserDexelInitStockSrf UserDexelInitStock

Keywords:




UserDexelReadDexelGridFromFile

(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:




UserDexelTriangulateDxGrid

(dexels.c:2264)

Prototype:

  IPPolygonStruct *UserDexelTriangulateDxGrid(UserDexelDxGridStruct *DxGrid)


Description:

Fits triangles over the dexel grid.

Parameters:

DxGrid: The dexel grid.


Returned Value:

IPPolygonStruct *: List of triangles.


See Also:



Keywords:




UserDexelWriteDexelGridToFile

(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:

void


See Also:

UserDexelReadDexelGridFromFile

Keywords:




UserDivideMdlAtAllKnots

(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:




UserDivideMdlsAtAllMVInteriorKnot

(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:




UserDivideOneMdlAtAllMVInteriorKnot

(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:




UserDivideOneSrfAtAllMVInteriorKnot

(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:




UserDivideOneSrfAtAllTVInteriorKnot

(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:




UserDivideOneTSrfAtAllMVInteriorKnot

(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:




UserDivideOneTVAtAllMVInteriorKnot

(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:




UserDivideOneVMdlAtAllMVInteriorKnot

(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:




UserDivideSrfAtInterCrvs

(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:




UserDivideSrfsAtAllMVInteriorKnot

(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:




UserDivideSrfsAtAllTVInteriorKnot

(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:




UserDivideTSrfAtAllKnots

(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:




UserDivideTSrfsAtAllMVInteriorKnot

(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:




UserDivideTVAtAllKnots

(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:




UserDivideTVsAtAllMVInteriorKnot

(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:




UserDivideVMdlAtAllKnots

(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:




UserDivideVMdlsAtAllMVInteriorKnot

(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:




UserFEBuildC1Mat

(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:




UserFEBuildC1Mat2

(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:




UserFEBuildC2Mat

(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:




UserFEBuildC2Mat2

(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:




UserFEBuildKMat

(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:




UserFEBuildKMat2

(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:




UserFEEvalRHSC

(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:




UserFEGetInterInterval

(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:




UserFEPointInsideSrf

(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:




UserFatalError

(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:

void


Keywords:

error handling


UserFontBspCrv2Poly

(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:




UserFontBspList2Plgns

(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:




UserFontBspList2Solids

(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:




UserFontBspList2SweptTubes

(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:




UserFontBspList2TrimSrfs

(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:




UserFontBzrList2BspList

(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:




UserFontConvertFontToBezier

(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:




UserFontConvertTextToGeom

(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:




UserFontFTStringOutline2BezierCurves

(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:




UserFontLayoutOverShape

(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:




UserFontLayoutOverShape2

(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:




UserFontLayoutOverShapeFree

(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:

void


See Also:

UserFontLayoutOverShape UserFontLayoutOverShape2 UserFontLayoutOverShapeGenWords UserFontLayoutOverShapePlaceWords.

Keywords:




UserFontLayoutOverShapeGenWords

(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:




UserFontLayoutOverShapePlaceWords

(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:




UserGr2DSwpArrangeTeeth

(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:




UserGr2DSwpComputeCentrode

(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:




UserGr2DSwpConjugateShape

(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:




UserGr2DSwpGenInverseMotion

(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:

void


Keywords:




UserGr2DSwpGenMotionOblong

(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:

void


Keywords:




UserGr2DSwpGenNonUniformMotion

(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:

void


Keywords:




UserGr2DSwpGenUniformMotion

(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:

void


Keywords:




UserGr2DSwpMain

(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:

void


Keywords:




UserGr2DSwpMatVecMult

(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:




UserGr2DSwpReadCrvFromFile

(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:

Filename: Curve to read.


Returned Value:

IPObjectStruct *: The planar shape read.


Keywords:




UserHCEditCopy

(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:

VoidPtr: Duplicated HC.


See Also:

UserHCEditInit

Keywords:




UserHCEditCreateAppendCtlpt

(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:




UserHCEditCreateDone

(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:




UserHCEditDelete

(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:

void


See Also:

UserHCEditInit

Keywords:




UserHCEditDeleteCtlpt

(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:




UserHCEditDrawCtlpts

(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:




UserHCEditEvalDefTans

(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:




UserHCEditFromCurve

(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:




UserHCEditGetCrvRepresentation

(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:




UserHCEditGetCtlPtCont

(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:




UserHCEditGetCtlPtTan

(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:




UserHCEditGetNumCtlPt

(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:




UserHCEditInit

(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:




UserHCEditInsertCtlpt

(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:




UserHCEditIsNearCrv

(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:




UserHCEditIsNearCtlPt

(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:




UserHCEditIsNearCtlTan

(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:




UserHCEditIsPeriodic

(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:




UserHCEditMatTrans

(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:




UserHCEditMoveCtl

(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:




UserHCEditMoveCtlPt

(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:




UserHCEditMoveCtlTan

(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:




UserHCEditRelativeTranslate

(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:




UserHCEditSetCtlPtCont

(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:

void


See Also:

UserHCEditInit

Keywords:




UserHCEditSetDrawCtlptFunc

(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:

void


See Also:

UserHCEditInit

Keywords:




UserHCEditSetPeriodic

(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:

void


See Also:

UserHCEditInit

Keywords:




UserHCEditTransform

(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:




UserHCEditUpdateCtl

(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:




UserInterSrfAtAllKnots

(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:




UserInterSrfByAlignedHyperPlane

(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:




UserInterSrfByAlignedHyperPlane2

(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:




UserKnmtcsEvalAtParams

(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:

void


Keywords:




UserKnmtcsEvalCrvTraces

(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:




UserKnmtcsFreeSol

(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:

void


Keywords:




UserKnmtcsNumOfSolPts

(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:




UserKnmtcsSolveDone

(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:

void


Keywords:




UserKnmtcsSolveMotion

(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:




UserLineAcccessSrfLineAccessFromObject

(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:




UserLineAccessSrfLineAccessResFree

(ln_access.c:442)

Prototype:

  void UserLineAccessSrfLineAccessResFree(
                             UserLineAccessSrfLineAccessResStruct *SrfLineAccess)


Description:

Frees a UserLineAccessSrfLineAccessResStruct and all its internal data structures.

Parameters:

SrfLineAccess: To free.


Returned Value:

void


See Also:

UserLineAccessSrfLineAccessResNew

Keywords:




UserLineAccessSrfLineAccessibility

(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


UserLineAccessSrfPreProcess

(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


UserLineCutPathToCutDirs

(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:




UserLineCutRobotPathToRuledSrf

(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:




UserMJConnectMToNTilesInJISrfs

(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:




UserMJConnectToJISrfs

(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:




UserMJJoinInterSrfFree

(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:

void


See Also:



Keywords:




UserMJJoinInterSrfListFree

(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:

void


See Also:



Keywords:




UserMJMergeAndSaveTileTVs

(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:




UserMJMicroJoinSynthesize

(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:




UserMJTileJointSrfFree

(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:

void


See Also:



Keywords:




UserMJTileStrctFree

(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:

void


See Also:



Keywords:




UserMJTileStrctListFree

(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:

void


See Also:



Keywords:




UserMJTileStrctNew

(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:




UserMJVMdlBooleanCallBack

(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:

void


Keywords:




UserMake3DStatueFrom2Images

(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:




UserMake3DStatueFrom3Images

(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:




UserMarchOnPolygons

(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:




UserMarchOnSurface

(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:




UserMicro3DCrossTile

(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:




UserMicroBifurcate1to2Tile

(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:




UserMicroCloseTrimCurves

(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:




UserMicroComputeAffineTrans

(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:

void


Keywords:




UserMicroEvalAlphaCoeffs

(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:

void


Keywords:




UserMicroFunctionalEvaluateEucl

(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:




UserMicroFunctionalEvaluateUV

(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:




UserMicroFunctionalFreeTiling

(micro2strct.c:4945)

Prototype:

  void UserMicroFunctionalFreeTiling(UserMicro2TilingStructPtr Tiling)


Description:

Deallocates a tiling structure.

Parameters:

Tiling: he tiling to deallocate.


Returned Value:

void


Keywords:




UserMicroFunctionalRandomTiling

(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:




UserMicroFunctionalTiling

(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:




UserMicroFunctionalTilingIsoSurface

(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:




UserMicroFunctionalTilingVolume

(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:

CagdRType: The volume.


Keywords:




UserMicroGenShellCapForThisTile

(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:




UserMicroGetBndryCrvs

(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:

void


Keywords:




UserMicroIsInternalBoundaryCP

(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:




UserMicroParseTileFromObj

(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:




UserMicroPreprocessFractalTile

(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:

void


Keywords:




UserMicroPreprocessG0DiscontTile

(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:

void


Keywords:




UserMicroRandomBifurcationTiling

(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:




UserMicroReadTileFromFile

(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:




UserMicroRegularBifurcationTiling

(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:




UserMicroSetUniqueGeomIDs

(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:

void


Keywords:




UserMicroSlicerCreateAll

(micro_slicer.c:835)

Prototype:

  TrivTVStruct *UserMicroSlicerCreateAll(const UserMicroSlicerInfoStruct *Slicer)


Description:

recursively create the all microstructure trivariates.

Parameters:

Slicer: The slicer.


Returned Value:

TrivTVStruct *: The trivariates created.


See Also:



Keywords:




UserMicroSlicerFree

(micro_slicer.c:779)

Prototype:

  void UserMicroSlicerFree(UserMicroSlicerInfoStruct *Slicer)


Description:

Free a slicer.

Parameters:

Slicer: The slicer.


Returned Value:

void


See Also:



Keywords:




UserMicroSlicerGetBoundarySrfsFromTV

(micro_slicer.c:996)

Prototype:

  CagdSrfStruct *UserMicroSlicerGetBoundarySrfsFromTV(const TrivTVStruct *Trivar)


Description:

Get the 6 bounding surfaces of a trivariate.

Parameters:

Trivar: The trivariate.


Returned Value:

CagdSrfStruct *: The trivariate bounding surfaces.


See Also:



Keywords:




UserMicroSlicerGetOutline

(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:




UserMicroSlicerInit

(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:




UserMicroSlicerSetLevel

(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:

void


See Also:



Keywords:




UserMicroSlicerSetTolerances

(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:

void


See Also:



Keywords:




UserMicroStitchBndryCrvs

(micro3strct.c:432)

Prototype:

  void UserMicroStitchBndryCrvs(UserMicroTilePreprocessStruct *UserMicroData)


Description:

Stitches the boundary curves of the tile.

Parameters:

UserMicroData: Preprocessing data.


Returned Value:

void


Keywords:




UserMicroStructComposition

(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:




UserMicroStructComposition2

(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:




UserMicroStructParamFree

(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:

void


See Also:

UserMicroParamStruct

Keywords:




UserMicroTileCopy

(micro_strct.c:229)

Prototype:

  UserMicroTileStruct *UserMicroTileCopy(const UserMicroTileStruct *Tile)


Description:

Creates a copy of a tile.

Parameters:

Tile: The tile to copy.


Returned Value:

UserMicroTileStruct *: Newly created copy.


Keywords:




UserMicroTileCopyList

(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:




UserMicroTileFindNeighbors

(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:




UserMicroTileFree

(micro_strct.c:170)

Prototype:

  void UserMicroTileFree(UserMicroTileStruct *Tile)


Description:

Frees a tile.

Parameters:

Tile: The tile to free.


Returned Value:

void


Keywords:




UserMicroTileFreeList

(micro_strct.c:199)

Prototype:

  void UserMicroTileFreeList(UserMicroTileStruct *Tile)


Description:

Frees a list of tiles.

Parameters:

Tile: The tile list to free.


Returned Value:

void


Keywords:




UserMicroTileNew

(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:




UserMicroTileTransform

(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:




UserMicroZSpringTile

(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:




UserMinDistLineBBox

(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:




UserMinDistLinePolygonList

(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:




UserMinDistLinePolylineList

(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:




UserMinDistPointPolylineList

(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:




UserMoldReliefAngle2Srf

(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:




UserMoldRuledRelief2Srf

(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:




UserNCContourToolPath

(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:




UserNCPocketToolPath

(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:




UserPackTileCreateTileObject

(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:




UserPackTileFreeTileObject

(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:

void


See Also:

UserPackTileCreateTileObject UserPackTilesInDomain

Keywords:




UserPackTilesInDomain

(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:




UserPatchAccessFree

(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:

void


See Also:



Keywords:




UserPatchAccessGetNumOfPatches

(patch_access.c:902)

Prototype:

  int UserPatchAccessGetNumOfPatches(const UserPatchAccessInfoStruct *Patches)


Description:

Get the number of patches.

Parameters:

Patches: The Patch access structure.


Returned Value:

int: Number of patches.


See Also:



Keywords:




UserPatchAccessGetNumOfSrfs

(patch_access.c:857)

Prototype:

  int UserPatchAccessGetNumOfSrfs(const UserPatchAccessInfoStruct *Patches)


Description:

Get the number of surfaces.

Parameters:

Patches: The Patch access structure.


Returned Value:

int: Number of surfaces.


See Also:



Keywords:




UserPatchAccessGetPatchData

(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:

void


See Also:



Keywords:




UserPatchAccessGetPatchVisible

(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:




UserPatchAccessGetSrf

(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:




UserPatchAccessPrep

(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:




UserPatchAccessSetDir

(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:

void


See Also:



Keywords:




UserPatchAccessSetPatchTest

(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:

void


See Also:



Keywords:




UserPkPackCircles

(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:




UserPolyline2LinBsplineCrv

(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


UserPolylines2LinBsplineCrvs

(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


UserPuz3DComposeTileOverModel

(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:




UserPuz3DComposeTileOverSrf

(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:




UserPuz3DTest

(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:




UserRegisterPointSetSrf

(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:




UserRegisterTestConvergance

(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:




UserRegisterTestSrfConvergance

(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:




UserRegisterTwoPointSets

(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:




UserRocketFuelDesign3D

(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:




UserRuledSrfFit

(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:




UserSCvrCoverSrf

(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


UserSetFatalErrorFunc

(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


UserSnapInterCrvs2Bndry

(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:

void


See Also:



Keywords:




UserSpkPolyObjBorderDelete

(sphere_pack.c:3115)

Prototype:

  void UserSpkPolyObjBorderDelete(UserSpkBorderStructPtr Border)


Description:

Deletes a Polygonal Object Border object.

Parameters:

Border: order object.


Returned Value:

void


Keywords:




UserSpkPolyObjBorderNew

(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:




UserSpkSolvingProcessDelete

(sphere_pack.c:2580)

Prototype:

  void UserSpkSolvingProcessDelete(UserSpkSolvingProcessStructPtr Process)


Description:

Deletes a Solving Process object.

Parameters:

Process: olving Process object.


Returned Value:

void


Keywords:




UserSpkSolvingProcessFork

(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:




UserSpkSolvingProcessNew

(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:




UserSpkSolvingProcessRunGravityAttempt

(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:

void


Keywords:




UserSpkSolvingProcessRunRepulsionsAttempt

(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:

void


Keywords:




UserSpkSolvingSettingsGetDefault

(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:




UserSpkSurfObjBorderDelete

(sphere_pack.c:3196)

Prototype:

  void UserSpkSurfObjBorderDelete(UserSpkBorderStructPtr Border)


Description:

Deletes a Surface Object Border object.

Parameters:

Border: order object.


Returned Value:

void


Keywords:




UserSpkSurfObjBorderNew

(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:




UserSrfFixedCurvatureLines

(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


UserSrfKernel

(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:




UserSrfParabolicLines

(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:




UserSrfParabolicSheets

(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:




UserSrfSrfInter

(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:




UserSrfTopoAspectGraph

(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:




UserSrfUmbilicalPts

(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


UserSrfVisibConeDecomp

(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:




UserSweepSectionDone

(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:




UserSweepSectionInit

(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:




UserSwpSecCnstrctToolCone

(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:

void


See Also:

UserSwpSecCnstrctToolGnrl UserSwpSecCnstrctToolSph UserSwpSecCnstrctToolCyl

Keywords:




UserSwpSecCnstrctToolCyl

(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:

void


See Also:

UserSwpSecCnstrctToolGnrl UserSwpSecCnstrctToolSph UserSwpSecCnstrctToolCone

Keywords:




UserSwpSecCnstrctToolGnrl

(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:

void


See Also:

UserSwpSecCnstrctToolCyl UserSwpSecCnstrctToolSph UserSwpSecCnstrctToolCone

Keywords:




UserSwpSecCnstrctToolSph

(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:

void


See Also:

UserSwpSecCnstrctToolGnrl UserSwpSecCnstrctToolCyl UserSwpSecCnstrctToolCone

Keywords:




UserSwpSecElimRedundantToolShapes

(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:

void


See Also:

UserSwpSecCnstrctToolCyl UserSwpSecCnstrctToolSph UserSwpSecCnstrctToolCone UserSwpSecCnstrctToolGnrl

Keywords:




UserSwpSecGetLineEnvelope

(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:




UserSwpSecGetPlaneEnvelope

(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:




UserSwpSecGetSrfEnvelope

(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:




UserSwpSecMachiningSimulation

(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:




UserSwpSecRenderTool

(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:




UserSwpSecToolCut

(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:




UserSwpSecToolMove

(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:




UserTVZeroJacobian

(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:




UserText2OutlineCurves2D

(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:




UserText2OutlineCurves2DInit

(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:




UserTile2DSemi12312

(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:




UserTile2DSemi12312D

(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:




UserTile2DSemi1246

(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:




UserTile2DSemi1246D

(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:




UserTile2DSemi33336

(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:




UserTile2DSemi33336D

(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:




UserTile2DSemi43433

(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:




UserTile2DSemi43433D

(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:




UserTile2DSemi4346

(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:




UserTile2DSemi4346D

(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:




UserTile2DSemi44333

(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:




UserTile2DSemi44333D

(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:




UserTile2DSemi6363

(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:




UserTile2DSemi6363D

(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:




UserTile2DSemi848

(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:




UserTile2DSemi848D

(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:




UserTileGetSteps

(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:

void


See Also:

UserTileSetSteps

Keywords:




UserTileSetSteps

(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:

void


See Also:

UserTileGetSteps

Keywords:




UserTopoAddCell

(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:




UserTopoAddNewCell

(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:




UserTopoAddNewCell2

(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:




UserTopoAddObjectToField

(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:




UserTopoAddPoints

(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:




UserTopoAllEntitiesWithPoint

(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:

int: Number of entities.


Keywords:




UserTopoAppendUnstrctGeoms

(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:




UserTopoApplyFilterToGrid

(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:




UserTopoAssignSequentialCellIDs

(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:




UserTopoAssignSequentialPointIDs

(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:




UserTopoCellClosestToPoint

(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:




UserTopoCellsAdjacentToCell

(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:




UserTopoCrvBndryFilter

(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:




UserTopoGetCellAttrThreshold

(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:

int: Number of entities.


Keywords:




UserTopoGetCellIntAttr

(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:




UserTopoGetCellIntAttrVec

(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:




UserTopoGetCellRealAttr

(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:




UserTopoGetCellRealAttrVec

(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:




UserTopoGetCellStrAttr

(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:




UserTopoGetCellStrAttrVec

(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:




UserTopoGetField

(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:




UserTopoGetPointAttrThreshold

(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:

int: Number of points.


Keywords:




UserTopoGetPointIntAttr

(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:




UserTopoGetPointIntAttrVec

(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:




UserTopoGetPointRealAttr

(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:




UserTopoGetPointRealAttrVec

(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:




UserTopoGetPointStrAttr

(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:




UserTopoGetPointStrAttrVec

(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:




UserTopoIdToObject

(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:




UserTopoMergePoints

(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:




UserTopoModifyPoint

(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:




UserTopoNumOfEntOfType

(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:

int: Number of entities.


Keywords:




UserTopoObjectToId

(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:




UserTopoPolylineSelector

(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:




UserTopoPtsOfCell

(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:




UserTopoPtsOfCellsWithAttrib

(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:

void


Keywords:




UserTopoPurgeUnusedPts

(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:




UserTopoReadGridFromFile

(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:




UserTopoSetCellIntAttr

(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:




UserTopoSetCellIntAttrVec

(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:




UserTopoSetCellRealAttr

(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:




UserTopoSetCellRealAttrVec

(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:




UserTopoSetCellStrAttr

(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:




UserTopoSetCellStrAttrVec

(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:




UserTopoSetFilterGridCallBackFunc

(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:




UserTopoSetPointIntAttr

(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:




UserTopoSetPointIntAttrVec

(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:




UserTopoSetPointRealAttr

(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:




UserTopoSetPointRealAttrVec

(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:




UserTopoSetPointStrAttr

(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:




UserTopoSetPointStrAttrVec

(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:




UserTopoSetPoints

(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:




UserTopoSrfBndryFilter

(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:




UserTopoTrivBndryFilter

(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:




UserTopoUDData

(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:

void


Keywords:




UserTopoUnstrctGeomFree

(unstrct_grid.c:1662)

Prototype:

  void UserTopoUnstrctGeomFree(UserTopoUnstrctGeomStruct *Ud)


Description:

Frees a UserTopoUnstrctGeomStruct grid.

Parameters:

Ud: Grid to free.


Returned Value:

void


See Also:

UserTopoUnstrctGeomNew

Keywords:




UserTopoUnstrctGeomMain

(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:




UserTopoUnstrctGeomNew

(unstrct_grid.c:1602)

Prototype:

  UserTopoUnstrctGeomStruct *UserTopoUnstrctGeomNew(void)


Description:

Allocates a new UserTopoUnstrctGeomStruct.

Parameters:

None


Returned Value:

UserTopoUnstrctGeomStruct *: Newly allocated structure.


See Also:

UserTopoUnstrctGeomFree UserTopoUnstrctGeomNew2

Keywords:




UserTopoUnstrctGeomPtCopyData

(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:

void


Keywords:




UserTopoUnstrctGeomUpdate

(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:

void


Keywords:




UserTopoWriteGridToFile

(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:




UserTrivarZeros

(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:




UserTrussCleanBeamICrvs

(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:

void


See Also:

UserTrussPrepBeamICrvsFast UserTrussPrepBeamICrvsMatched UserTrussCleanBeamICrvs

Keywords:




UserTrussClipComp

(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:




UserTrussCloseOneCrvLoopOppEdges

(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:




UserTrussComputeSideSrfs

(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:




UserTrussConstructLatticeMain

(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


UserTrussCreateShellSrfConnections

(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:




UserTrussDefaultTol

(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:

void


Keywords:




UserTrussFilterShortCrvs

(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:

void


Keywords:




UserTrussICrvsCloseLoops

(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:

void


See Also:

UserTrussCloseOneCrvLoopEdge UserTrussCloseOneCrvLoopCorner UserTrussCloseOneCrvLoopOppEdges

Keywords:




UserTrussLatticeWithQualityInfo

(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


UserTrussMdlPostProcess

(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


UserTrussNodeDefCleanup

(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:

void


Keywords:




UserTrussNodeSrfs

(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:

void


See Also:

UserTrussTrimmedNode LatticeConstructNodeTriv

Keywords:




UserTrussPrepBeamICrvsFast

(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:

void


See Also:

UserTrussPrepBeamICrvs UserTrussPrepBeamICrvsMatched UserTrussCleanBeamICrvs

Keywords:




UserTrussPrepBeamICrvsMatched

(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:

void


See Also:

UserTrussPrepBeamICrvs UserTrussPrepBeamICrvsFast UserTrussCleanBeamICrvs

Keywords:




UserTrussPrepareBeamInfo

(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:




UserTrussPrepareBeamInfoWithShell

(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:




UserTrussSetConstBeamCallbacks

(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:

void


See Also:

UserTrussSetGradedBeamCallbacks

Keywords:




UserTrussSetCustomBeamCallbacks

(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:

void


See Also:

UserTrussSetConstBeamCallbacks UserTrussSetGradedBeamCallbacks

Keywords:




UserTrussSetGradedBeamCallbacks

(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:

void


See Also:

UserTrussSetConstBeamCallbacks

Keywords:




UserTrussSplitCrvTo2CoordsCrvs

(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:




UserTrussTrimmedLattice

(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


UserTrussTrimmedLatticeWithShell

(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


UserTrussTrimmedNode

(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:




UserTrussTrivLattice

(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


UserTrussTrivLatticeWithShell

(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


UserTwoObjMaxZRelMotion

(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:




UserViewingConeSrfDomains

(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:




UserVisibilityClassify

(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:




UserWDDitherCombiBW

(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


UserWDDitherCombiRGB

(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


UserWDDitherStochasticBW

(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


UserWDDitherStochasticRGB

(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


UserWarpTextOnSurface

(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:




main

(fntelem1.c:1434)

Prototype:

  void main(void)


Description:

Test routines for the FE code.

Parameters:

None


Returned Value:

void


Keywords: