MCExtractIsoSurface

(mrch_run.c:236)

Prototype:

  IPObjectStruct *MCExtractIsoSurface(const char *FileName,
                                      int DataType,
                                      IrtPtType CubeDim,
                                      int Width,
                                      int Height,
                                      int Depth,
                                      int SkipFactor,
                                      CagdRType IsoVal)


Description:

Extract a polygonal iso-surface out of volumetric data file.

Parameters:

FileName: Containing the volumetric data.
DataType: Type of scalar value in volume. Can be one of: 1 - Regular float or int ascii (separated by white spaces). 2 - Two bytes short integer. 3 - Four bytes long integer. 4 - One byte (char) integer. 5 - Four bytes float. 6 - Eight bytes double.
CubeDim: Width, height, and depth of a single cube, in object space coordinates.
Width: Of volumetric data set.
Height: Of volumetric data set.
Depth: Of volumetric data set.
SkipFactor: ypically 1. For 2, only every second sample is considered and for i, only every i'th sample is considered, in all axes.
IsoVal: At which to extract the iso-surface.


Returned Value:

IPObjectStruct *: A polygonal approximation of the iso-surface at IsoVal computed using the marching cubes algorithm.


See Also:

MCThresholdCube MCExtractIsoSurface2 MCExtractIsoSurface3

Keywords:




MCExtractIsoSurface2

(mrch_run.c:324)

Prototype:

  IPObjectStruct *MCExtractIsoSurface2(const TrivTVStruct *CTV,
                                       int Axis,
                                       CagdBType TrivarNormals,
                                       IrtPtType CubeDim,
                                       int SkipFactor,
                                       CagdRType SamplingFactor,
                                       CagdRType IsoVal)


Description:

Extract a polygonal iso-surface out of a trivariate function.

Parameters:

CTV: The trivariate to compute an iso surface approximation for,
Axis: Of the trivariate to handle, 1 for X, 2 for Y, etc.
TrivarNormals: If TRUE normal are computed using gradient of the trivariate, if FALSE no normal are estimated.
CubeDim: Width, height, and depth of a single cube, in object space coordinates.
SkipFactor: ypically 1. For 2, only every second sample is considered and for i, only every i'th sample is considered, in all axes.
SamplingFactor: Additional relative sampling to apply to TV. If SamplingFactor set to 1.0, the trivariate is sampled ULength * VLength * WLength. Otherwise, the samplings are (ULength * SamplingFactor) * (VLength * SamplingFactor) * (WLength * SamplingFactor).
IsoVal: At which to extract the iso-surface.


Returned Value:

IPObjectStruct *: A polygonal approximation of the iso-surface at IsoVal computed using the marching cubes algorithm.


See Also:

MCThresholdCube MCExtractIsoSurface MCExtractIsoSurface3

Keywords:




MCExtractIsoSurface3

(mrch_run.c:446)

Prototype:

  IPObjectStruct *MCExtractIsoSurface3(IPObjectStruct *ImageList,
                                       IrtPtType CubeDim,
                                       int SkipFactor,
                                       CagdRType IsoVal)


Description:

Extract a polygonal iso-surface out of a stack of images.

Parameters:

ImageList: List of image file names.
CubeDim: Width, height, and depth of a single cube, in object space coordinates.
SkipFactor: ypically 1. For 2, only every second sample is considered and for i, only every i'th sample is considered, in all axes.
IsoVal: At which to extract the iso-surface.


Returned Value:

IPObjectStruct *: A polygonal approximation of the iso-surface at IsoVal computed using the marching cubes algorithm.


See Also:

MCThresholdCube MCExtractIsoSurface MCExtractIsoSurface2

Keywords:




MCExtractIsoSurface4

(mrch_run.c:524)

Prototype:

  IPObjectStruct *MCExtractIsoSurface4(const void **ImageVector,
                                       const int *Size,
                                       TrivImagePixelType PixelType,
                                       IrtPtType CubeDim,
                                       int SkipFactor,
                                       CagdRType IsoVal)


Description:

Extract a polygonal iso-surface out of a stack of images.

Parameters:

ImageVector: ector of images of size Size[2].
Size: Dimensions of list of images of Size[0] x Size[1]).
PixelType: Pixel type of in the images - byte, RGBA of float, etc.
CubeDim: Width, height, and depth of a single cube, in object space coordinates.
SkipFactor: ypically 1. For 2, only every second sample is considered and for i, only every i'th sample is considered, in all axes.
IsoVal: At which to extract the iso-surface.


Returned Value:

IPObjectStruct *: A polygonal approximation of the iso-surface at IsoVal computed using the marching cubes algorithm.


See Also:

MCThresholdCube MCExtractIsoSurface MCExtractIsoSurface2 MCExtractIsoSurface3

Keywords:




MCImprovePointOnIsoSrf

(mrchtriv.c:192)

Prototype:

  int MCImprovePointOnIsoSrf(MCImprovePointOnIsoSrfInfoStruct
                                                           *MCImprovePointOnIS,
                             IrtPtType Pt,
                             const IrtPtType CubeDim,
                             CagdRType IsoVal,
                             CagdRType Tolerance,
                             CagdRType AllowedError)


Description:

Improves a given Pt to "sit" exactly on top of the iso surface, by moving along the gradient of the trivariate. Assume TV has been preprocessed by MCImprovePointOnIsoSrfPrelude.

Parameters:

MCImprovePointOnIS: ointer to struct that contains all auxiliary trivariate derivatives, for fast marching.
Pt: Position to improve.
CubeDim: Size of a single cell in the trivariate volume.
IsoVal: Of iso surface extracted from TV that Pt is approximately on.
Tolerance: Requested accuracy.
AllowedError: Maximally allowed error to be considered valid. If zero it is ignored.


Returned Value:

int: TRUE if successful, FALSE otherwise.


See Also:

MCImprovePointOnIsoSrfPrelude MCImprovePointOnIsoSrfPostlude MCExtractIsoSurface2

Keywords:




MCImprovePointOnIsoSrfPostlude

(mrchtriv.c:86)

Prototype:

  void MCImprovePointOnIsoSrfPostlude(MCImprovePointOnIsoSrfInfoStruct
                                                          *MCImprovePointOnIS)


Description:

Release all allocated auxiliary trivariate derivatives, for fast marching.

Parameters:

MCImprovePointOnIS: ointer to struct that contains all auxiliary trivariate derivatives, for fast marching.


Returned Value:

void


See Also:

MCImprovePointOnIsoSrfPrelude MCImprovePointOnIsoSrf

Keywords:




MCImprovePointOnIsoSrfPrelude

(mrchtriv.c:126)

Prototype:

  MCImprovePointOnIsoSrfInfoStruct *MCImprovePointOnIsoSrfPrelude(
                                                         const TrivTVStruct *TV)


Description:

Prepare the necessary derivative vector fields of TV for fast marching on the trivariate, later on.

Parameters:

TV: to process and prepare for further iso surface marching.


Returned Value:

MCImprovePointOnIsoSrfInfoStruct *: Pointer to struct that contains all auxiliary trivariate derivatives, for fast marching. NULL if error.


See Also:

MCImprovePointOnIsoSrfPostlude MCImprovePointOnIsoSrf

Keywords:




MCThresholdCube

(mrchcube.c:94)

Prototype:

  MCPolygonStruct *MCThresholdCube(MCCubeCornerScalarStruct *CCS,
                                   IrtRType Threshold)


Description:

Given 8 cube corner values (scalars), compute the polygon(s) in this cube along the isosurface at Threshold. if CCS has gradient information, it is used to approximate normals at the vertices.

                    7            K           6
                     ***********************
                   * +                   * *
               L *   +                 *   *              Vertices 0 - 7
               *     +     I         * J   *              Edges    A - L
           4 *********************** 5     *
             *       +             *       *
             *       +             *       * G
             *       + H           *       *
             *       +             *       *
             *       +             * F     *
           E *       +       C     *       *
             *       ++++++++++++++*+++++++* 2
             *   D + 3             *     *
             *   +                 *   * B
             * +                   * *
             ***********************
            0           A           1


Parameters:

CCS: The cube's dimensions/information.
Threshold: Iso surface level.


Returned Value:

MCPolygonStruct *: List of polygons (not necessarily triangles), or possibly NULL.


See Also:

MCExtractIsoSurface MCInitializeCube

Keywords:

marching cubes


TrivAdapIsoExtractCrvs

(adaptiso.c:679)

Prototype:

  CagdCrvStruct *TrivAdapIsoExtractCrvs(const TrivTVStruct *Trivar,
                                        TrivTVDirType SrfDir,
                                        CagdRType Epsilon,
                                        int InitialDiv,
                                        CagdSrfDirType CrvDir,
                                        CagdRType CntrEps)


Description:


This function returns a list of curves, adaptively extracted, corresponding to the provided isocurves extraction parameters.

Parameters:

Trivar: The trivariate to deconstruct into curves.
SrfDir: Direction of adaptive isosurfaces extraction, as a first step for the adaptive isocurves extractions. Either U or V or W.
Epsilon: Maximum allowed distance from any point inside Trivar to some surface in the deconstruction.
InitialDiv: umber of initial divisions (regardless of Epsilon) as the depth of division tree to enforce. face equals UMax, etc.
CrvDir: Direction of curves, U, V or Both.
CntrEps: Tolerance of contouring surface geometry (computing trimming crvs).


Returned Value:

CagdCrvStruct *: List of adaptively extracted curves.


See Also:

SymbAdapIsoExtract TrivAdapIsoExtractSrfs

Keywords:

IsoSurfaces IsoCurves


TrivAdapIsoExtractSrfs

(adaptiso.c:622)

Prototype:

  TrimSrfStruct *TrivAdapIsoExtractSrfs(const TrivTVStruct *Trivar,
                                        TrivTVDirType Dir,
                                        CagdRType Epsilon,
                                        int InitialDiv,
                                        CagdRType CntrEps)


Description:

This function returns a list of surfaces, adaptively extracted, corresponding to the provided isosurfaces extraction parameters.

Parameters:

Trivar: The trivariate to deconstruct into surfaces.
Dir: Direction of adaptive isosurfaces extraction. Either U or V or W.
Epsilon: Maximum allowed distance from any point inside Trivar to some surface in the deconstruction.
InitialDiv: umber of initial divisions (regardless of Epsilon) as the depth of division tree to enforce. Needed for cases such as periodic trivariates when UMin face equals UMax, etc.
CntrEps: Tolerance of contouring surface geometry (computing trimming crvs).


Returned Value:

TrimSrfStruct *: List of adaptively extracted surfaces.


See Also:

SymbAdapIsoExtract TrivAdapIsoExtractCrvs

Keywords:

IsoSurfaces


TrivAlgebraicProdTV

(trivcnst.c:68)

Prototype:

  TrivTVStruct *TrivAlgebraicProdTV(const CagdCrvStruct *Crv,
                                    const CagdSrfStruct *Srf)


Description:

Multiply algebraically the given curve and surface, C(r) and S(s,t). The result is a trivariate T(r, s, t) = C(r) S(s, t).

Parameters:

Crv, Srf: A curve and a surface to multiple into a trivariate.


Returned Value:

TrivTVStruct *: A trivariate represent their product, algebraically.


See Also:

TrivSwungAlgSumTV TrivAlgebraicSumTV SymbAlgebraicProdSrf SymbAlgebraicSumSrf SymbSwungAlgSumSrf

Keywords:




TrivAlgebraicSumTV

(trivcnst.c:30)

Prototype:

  TrivTVStruct *TrivAlgebraicSumTV(const CagdCrvStruct *Crv,
                                   const CagdSrfStruct *Srf)


Description:

Adds up algebraically the given curve and surface, C(r) and S(s,t). The result is a trivariate T(r, s, t) = C(r) + S(s, t).

Parameters:

Crv, Srf: A curve and a surface to add algebraically into a trivariate.


Returned Value:

TrivTVStruct *: A trivariate represent their sum, algebraically.


See Also:

TrivSwungAlgSumTV TrivAlgebraicProdTV SymbAlgebraicSumSrf SymbSwungAlgSumSrf SymbAlgebraicProdSrf

Keywords:




TrivBlendFilletProperties

(triv_fillet.c:4288)

Prototype:

  void TrivBlendFilletProperties(TrivTVStruct **FilletTV,
                                 const CagdSrfStruct *PrimSrf1,
                                 const CagdSrfStruct *PrimSrf2)


Description:

Blends the material properties of the two given primary surfaes and encodes them into the given fillet trivariate. The given fillet trivariate is assumed to be constructed as a ruled volume.

Parameters:

FilletTV: To encode the properties into.
PrimSrf1, PrimSrf2: To blend their properties.


Returned Value:

void


See Also:

TrivTVFillet

Keywords:

blending filleting


TrivBndryCrnrsFromTV

(triveval.c:1097)

Prototype:

  CagdPtStruct *TrivBndryCrnrsFromTV(const TrivTVStruct *TV)


Description:

Extracts the eight boundary corners of the (topological cube of) given tensor product trivariate.

Parameters:

TV: To extract the eight boundary corners from.


Returned Value:

CagdPtStruct *: A linked list of eight corners of trivariate TV.


See Also:

TrivSrfFromTV TrivBndryEdgesFromTV TrivBndrySrfsFromTV

Keywords:

trivariates


TrivBndryEdgesFromTV

(triveval.c:1038)

Prototype:

  CagdCrvStruct *TrivBndryEdgesFromTV(const TrivTVStruct *TV)


Description:

Extracts the twelve boundary curves of the (topological cube of) given tensor product trivariate.

Parameters:

TV: To extract the twelve boundary curves from.


Returned Value:

CagdCrvStruct *: A linked list of twelve curves, representing the twelve boundary edges of trivariate TV.


See Also:

TrivSrfFromTV TrivBndryEdgesFromTV TrivBndryCrnrsFromTV

Keywords:

trivariates


TrivBndrySrfsFromTVToData

(triveval.c:835)

Prototype:

  CagdSrfStruct **TrivBndrySrfsFromTVToData(const TrivTVStruct *TV,
                                            int OrientBoundary,
                                            CagdSrfStruct **Srfs)


Description:

Extracts the six boundary surfaces of the given tensor product trivariate.

Parameters:

TV: To extract the six boundary surfaces from.
OrientBoundary: Controls the orientations of extracted surfaces as, 0 - do no aim to examine/change the surfaces orientations. 1 - to reorient boundary surfaces to point with their normals into the trivariate. 2 - same as 1, but only tags the extract surface as "reversed" attribute, without reversing the surface.
Srfs: A pointer to a vector of six surface pointers, representing the six boundaries of the trivariate TV in order of UMin, UMax, VMin, VMax, WMin, WMax.


Returned Value:

CagdSrfStruct **: A pointer to a vector of six surface pointers, representing the six boundaries of the trivariate TV in order of UMin, UMax, VMin, VMax, WMin, WMax.


See Also:

TrivSrfFromTV TrivBndryEdgesFromTV TrivBndryCrnrsFromTV TrivBndrySrfsFromTVs

Keywords:

trivariates


TrivBndrySrfsFromTVs

(triveval.c:916)

Prototype:

  CagdSrfStruct *TrivBndrySrfsFromTVs(const TrivTVStruct *Trivars,
                                      CagdRType Eps,
                                      int OrientBoundary)


Description:

Get the bounding surfaces of all trivariate in a list. Duplicated surfaces (from different adjacent trivariates) are optionally removed according to the parameters given.

Parameters:

Trivars: The trivariate list.
Eps: Epsilon value for duplicate determination. Set to 0 (or negative) to disable duplicate removal. If positive, similar surfaces, up to Eps will be considered identical and will be purged from the output.
OrientBoundary: Controls the orientations of extracted surfaces as, 0 - do no aim to examine/change the surfaces orientations. 1 - to reorient boundary surfaces to point with their normals into the trivariate. 2 - same as 1, but only tags the extract surface as "reversed" attribute, without reversing the surface.


Returned Value:

CagdSrfStruct *: The bounding surfaces of all trivariates in the list.


See Also:

TrivBndrySrfsFromTVToData

Keywords:




TrivBspPeriodicTVNew

(triv_gen.c:174)

Prototype:

  TrivTVStruct *TrivBspPeriodicTVNew(int ULength,
                                     int VLength,
                                     int WLength,
                                     int UOrder,
                                     int VOrder,
                                     int WOrder,
                                     CagdBType UPeriodic,
                                     CagdBType VPeriodic,
                                     CagdBType WPeriodic,
                                     CagdPointType PType)


Description:

Allocates the memory required for a new, possibly periodic, B-spline trivariate.

Parameters:

ULength: Number of control points in the U direction.
VLength: Number of control points in the V direction.
WLength: Number of control points in the W direction.
UOrder: The order of the surface in the U direction.
VOrder: The order of the surface in the V direction.
WOrder: The order of the surface in the W direction.
UPeriodic: Is this surface periodic in the U direction?
VPeriodic: Is this surface periodic in the V direction?
WPeriodic: Is this surface periodic in the W direction?
PType: Type of control points (E2, P3, etc.).


Returned Value:

TrivTVStruct *: An uninitialized freeform B-spline trivariate. If UPeriodic, VPeriodic and WPeriodic are FALSE, this function is identical to TrivTVNew.


See Also:

BspSrfNew BzrSrfNew CagdSrfNew CagdPeriodicSrfNew TrimSrfNew BspPeriodicSrfNew

Keywords:

allocation


TrivBspTVDegreeRaise

(trivrais.c:229)

Prototype:

  TrivTVStruct *TrivBspTVDegreeRaise(const TrivTVStruct *TV, TrivTVDirType Dir)


Description:

Returns a new Bspline trivariate, identical to the original but with one degree higher, in the requested direction Dir.

Parameters:

TV: To raise it degree by one.
Dir: Direction of degree raising. Either U, V or W.


Returned Value:

TrivTVStruct *: A trivariate with one degree higher in direction Dir, representing the same geometry as TV.


See Also:

TrivTVBlossomDegreeRaise TrivBzrTVDegreeRaise TrivTVDegreeRaise

Keywords:

degree raising


TrivBspTVDerive

(triv_der.c:233)

Prototype:

  TrivTVStruct *TrivBspTVDerive(const TrivTVStruct *TV,
                                TrivTVDirType Dir,
                                CagdBType DeriveScalar)


Description:

Given a B-spline trivariate, computes its partial derivative trivariate in direction Dir. Let old control polygon be P(i), i = 0 to k-1, and Q(i) be new one then:
Q(i) = (k - 1) * (P(i+1) - P(i)) / (Kv(i + k) - Kv(i + 1)), i = 0 to k-2.


Parameters:

TV: Trivariate to differentiate.
Dir: Direction of differentiation. Either U or V or W.
DeriveScalar: TRUE to differentiate each channel independently. FALSE to treat geometry as a rational differentiation.


Returned Value:

TrivTVStruct *: Differentiated trivariate in direction Dir. A Bspline trivariate.


See Also:

TrivBzrTVDerive TrivBspTVDeriveScalar TrivTVDerive

Keywords:

trivariates


TrivBspTVDeriveScalar

(triv_der.c:382)

Prototype:

  TrivTVStruct *TrivBspTVDeriveScalar(const TrivTVStruct *TV, TrivTVDirType Dir)


Description:


Given a B-spline trivariate, computes its partial derivative trivariate in direction Dir, each dimension on its own including the weights, if any. Let old control polygon be P(i), i = 0 to k-1, and Q(i) be new one then:
Q(i) = (k - 1) * (P(i+1) - P(i)) / (Kv(i + k) - Kv(i + 1)), i = 0 to k-2.


Parameters:

TV: Trivariate to differentiate.
Dir: Direction of differentiation. Either U or V or W.


Returned Value:

TrivTVStruct *: Differentiated trivariate in direction Dir. A Bspline trivariate.


See Also:

TrivBspTVDerive TrivBzrTVDeriveScalar TrivTVDeriveScalar

Keywords:

trivariates


TrivBspTVHasBezierKVs

(triv_gen.c:1077)

Prototype:

  CagdBType TrivBspTVHasBezierKVs(const TrivTVStruct *TV)


Description:


Returns TRUE iff the given trivar has no interior knot open end KVs.

Parameters:

TV: To check for KVs that mimics Bezier polynomial surface.


Returned Value:

CagdBType: TRUE if same as Bezier trivar, FALSE otherwise.


Keywords:

conversion


TrivBspTVHasOpenEC

(triv_gen.c:1098)

Prototype:

  CagdBType TrivBspTVHasOpenEC(const TrivTVStruct *TV)


Description:

Returns TRUE iff the given B-spline trivar has open end coditions.

Parameters:

TV: To check for open end conditions.


Returned Value:

CagdBType: TRUE, if trivar has open end conditions, FALSE otherwise.


Keywords:

open end conditions


TrivBspTVKnotInsertNDiff

(triv_ref.c:87)

Prototype:

  TrivTVStruct *TrivBspTVKnotInsertNDiff(const TrivTVStruct *TV,
                                         TrivTVDirType Dir,
                                         int Replace,
                                         const CagdRType *t,
                                         int n)


Description:

Given a Bspline trivariate, inserts n knots with different values as defined by t. If, however, Replace is TRUE, the knot are simply replacing the current knot vector in the prescribed direction.

Parameters:

TV: Trivariate to refine according to t in direction Dir.
Dir: Direction of refinement. Either U or V or W.
Replace: If TRUE t is a knot vector exaclt in the length of the knot vector in direction Dir in TV and t simply replaces than knot vector. If FALSE, the knot vector in direction Dir in TV is refined by adding all the knots in t.
t: Knot vector to refine/replace the knot vector of TV in direction Dir.
n: Length of vector t.


Returned Value:

TrivTVStruct *: The refined trivariate. A Bspline trivariate.


Keywords:

trivariates


TrivBspTVNew

(triv_gen.c:111)

Prototype:

  TrivTVStruct *TrivBspTVNew(int ULength,
                             int VLength,
                             int WLength,
                             int UOrder,
                             int VOrder,
                             int WOrder,
                             CagdPointType PType)


Description:

Allocates the memory required for a new B-spline trivariate.

Parameters:

ULength: Number of control points in the U direction.
VLength: Number of control points in the V direction.
WLength: Number of control points in the W direction.
UOrder: Order of trivariate in the U direction.
VOrder: Order of trivariate in the V direction.
WOrder: Order of trivariate in the W direction.
PType: Type of control points (E2, P3, etc.).


Returned Value:

TrivTVStruct *: An uninitialized freeform trivariate B-spline.


See Also:

TrivBzrTVNew TrivTVNew TrivPwrTVNew

Keywords:

trivariates allocation


TrivBzrComposeTVCrv

(compost3.c:631)

Prototype:

  CagdCrvStruct *TrivBzrComposeTVCrv(const TrivTVStruct *TV,
                                     const CagdCrvStruct *Crv)


Description:

Given curve Crv and Bezier trivariate TV, computes their composition TV(Crv(t)), Crv(t) = (u(t), v(t), w(t)). Crv must be a three dimensional curve completely contained in the parametric domain of TV. Compute the compositions by the products of:
TV(u, v, w) = TV(u(t), v(t), w(t))

           n   m   l
        = sum sum sum Pijk Bi(u(t)) Bj(v(t)) Bk(w(t))
          i=0 j=0 k=0

           n   m   l        n        i           n-i
        = sum sum sum Pijk ( ) (u(t))  (1 - u(t))
          i=0 j=0 k=0       i
                               m        j           m-j
                              ( ) (v(t))  (1 - v(t))
                               j
                                  l        k           l-k
                                 ( ) (w(t))  (1 - w(t))
                                  k


Parameters:

TV, Crv: The trivar and curve to compose. TV must be Bezier.


Returned Value:

CagdCrvStruct *: The resulting composition.


See Also:

SymbComposeTVCrv BzrComposeCrvCrv TrivBzrComposeTVSrf

Keywords:

composition


TrivBzrComposeTVSrf

(compost3.c:1047)

Prototype:

  CagdSrfStruct *TrivBzrComposeTVSrf(const TrivTVStruct *TV,
                                     const CagdSrfStruct *Srf)


Description:


Given surface Srf and Bezier trivariate TV, computes their composition TV(Srf(a, b)), Srf(a, b) = (u(a, b), v(a, b), w(a, b)). Srf must be a three dimensional surface completely contained in the parametric domain of TV. Compute the compositions by the products of:
TV(u, v, w) = TV(u(a, b), v(a, b), w(a, b))

           n   m   l
        = sum sum sum Pijk Bi(u(a, b)) Bj(v(a, b)) Bk(w(a, b))
          i=0 j=0 k=0

           n   m   l        n           i              n-i
        = sum sum sum Pijk ( ) (u(a, b))  (1 - u(a, b))
          i=0 j=0 k=0       i
                               m           j              m-j
                              ( ) (v(a, b))  (1 - v(a, b))
                               j
                                  l           k              l-k
                                 ( ) (w(a, b))  (1 - w(a, b))
                                  k


Parameters:

TV, Srf: The trivar and surface to compose. TV must be Bezier.


Returned Value:

CagdSrfStruct *: The resulting composition.


See Also:

SymbComposeTVSrf BzrComposeSrfSrf TrivBzrComposeTVCrv

Keywords:

composition


TrivBzrTVDegreeRaise

(trivrais.c:120)

Prototype:

  TrivTVStruct *TrivBzrTVDegreeRaise(const TrivTVStruct *TV, TrivTVDirType Dir)


Description:


Returns a new Bezier trivariate, identical to the original but with one degree higher, in the requested direction Dir. Let old control polygon be P(i), i = 0 to k-1, and Q(i) be new one then:
                     i            k-i
Q(0) = P(0), Q(i) = --- P(i-1) + (---) P(i), Q(k) = P(k-1).
                     k             k

This is applied to all rows/cols of the trivariate.

Parameters:

TV: To raise it degree by one.
Dir: Direction of degree raising. Either U, V or W.


Returned Value:

TrivTVStruct *: A trivariate with one degree higher in direction Dir, representing the same geometry as TV.


See Also:

TrivTVBlossomDegreeRaise TrivBspTVDegreeRaise TrivTVDegreeRaise

Keywords:

degree raising


TrivBzrTVDerive

(triv_der.c:106)

Prototype:

  TrivTVStruct *TrivBzrTVDerive(const TrivTVStruct *TV,
                                TrivTVDirType Dir,
                                CagdBType DeriveScalar)


Description:

Given a Bezier trivariate, computes its partial derivative trivariate in direction Dir. Let old control polygon be P(i), i = 0 to k-1, and Q(i) be new one then:
Q(i) = (k - 1) * (P(i+1) - P(i)), i = 0 to k-2.


Parameters:

TV: Trivariate to differentiate.
Dir: Direction of differentiation. Either U or V or W.
DeriveScalar: TRUE to differentiate each channel independently. FALSE to treat geometry as a rational differentiation.


Returned Value:

TrivTVStruct *: Differentiated trivariate in direction Dir. A Bezier trivariate.


See Also:

TrivBzrTVDeriveScalar TrivBspTVDerive TrivTVDerive

Keywords:

trivariates


TrivBzrTVDeriveScalar

(triv_der.c:199)

Prototype:

  TrivTVStruct *TrivBzrTVDeriveScalar(const TrivTVStruct *TV, TrivTVDirType Dir)


Description:


Given a Bezier trivariate, computes its scalar partial derivative trivariate in direction Dir, each dimension on its own including the weights, if any. Let old control polygon be P(i), i = 0 to k-1, and Q(i) be new one then:
Q(i) = (k - 1) * (P(i+1) - P(i)), i = 0 to k-2.


Parameters:

TV: Trivariate to differentiate.
Dir: Direction of differentiation. Either U or V or W.


Returned Value:

TrivTVStruct *: Differentiated trivariate in direction Dir. A Bezier trivariate.


See Also:

TrivBzrTVDerive TrivBspTVDeriveScalar TrivTVDeriveScalar

Keywords:

trivariates


TrivBzrTVNew

(triv_gen.c:229)

Prototype:

  TrivTVStruct *TrivBzrTVNew(int ULength,
                             int VLength,
                             int WLength,
                             CagdPointType PType)


Description:


Allocates the memory required for a new Bezier trivariate.

Parameters:

ULength: Number of control points in the U direction.
VLength: Number of control points in the V direction.
WLength: Number of control points in the W direction.
PType: Type of control points (E2, P3, etc.).


Returned Value:

TrivTVStruct *: An uninitialized freeform trivariate Bezier.


See Also:

TrivTVNew TrivBspTVNew TrivPwrTVNew

Keywords:

trivariates allocation


TrivCnvrtBsp2BzrTV

(triv_gen.c:774)

Prototype:

  TrivTVStruct *TrivCnvrtBsp2BzrTV(const TrivTVStruct *TV)


Description:

Convert a B-spline trivar into a set of Bezier trivars by subdiving the B-spline trivar at all its internal knots. Returned is a list of Bezier trivars.

Parameters:

TV: B-spline trivar to convert to a Bezier trivar.


Returned Value:

TrivTVStruct *: A list of Bezier trivars representing same geometry as TV.


See Also:

TrivCnvrtBzr2BspeTV

Keywords:

conversion


TrivCnvrtBzr2BspTV

(triv_gen.c:731)

Prototype:

  TrivTVStruct *TrivCnvrtBzr2BspTV(const TrivTVStruct *TV)


Description:

Converts a Bezier trivariate into a B-spline trivariate by adding two open end uniform knot vectors to it.

Parameters:

TV: A Bezier trivariate to convert to a B-spline TV.


Returned Value:

TrivTVStruct *: A B-spline trivariate representing the same geometry as the given Bezier TV.


See Also:

TrivCnvrtBsp2BzrTV

Keywords:

conversion trivariate


TrivCnvrtCrvToTV

(trivruld.c:178)

Prototype:

  TrivTVStruct *TrivCnvrtCrvToTV(const CagdCrvStruct *Crv,
                                 TrivTVDirType Dir)


Description:

Promotes a curve to a trivariate by creating a constant trivariate in two new direction. Dir sets the direction to use for the curve (U, V, or W). The resulting trivariate is degenerate in that its speed is zero in the two new direction and hence is not regular.

Parameters:

Crv: A curve to promote into a trivariate.
Dir: Direction of curve in the promotion. Either U or V or W.


Returned Value:

TrivTVStruct *: The trivariate promoted from Crv.


See Also:

TrivCnvrtSrfToTV

Keywords:




TrivCnvrtFloat2OpenTV

(triv_gen.c:1002)

Prototype:

  TrivTVStruct *TrivCnvrtFloat2OpenTV(const TrivTVStruct *TV)


Description:

Converts a float B-spline trivariate to a B-spline trivariate with open end conditions.

Parameters:

TV: B-spline trivariate to convert to open end conditions.


Returned Value:

TrivTVStruct *: A B-spline trivariate with open end conditions, representing the same geometry as TV.


See Also:

TrivCnvrtPeriodic2FloatTV TrivTVOpenEnd

Keywords:

conversion


TrivCnvrtPeriodic2FloatTV

(triv_gen.c:869)

Prototype:

  TrivTVStruct *TrivCnvrtPeriodic2FloatTV(const TrivTVStruct *TV)


Description:

Converts a B-spline trivariate into a B-spline trivariate with floating end conditions.

Parameters:

TV: B-spline trivariate to convert to floating end conditions. Assume TV is either periodic or has floating end condition.


Returned Value:

TrivTVStruct *: A B-spline trivariate with floating end conditions, representing the same geometry as TV.


See Also:

TrivCnvrtFloat2OpenTV

Keywords:

conversion


TrivCnvrtSrfToTV

(trivruld.c:215)

Prototype:

  TrivTVStruct *TrivCnvrtSrfToTV(const CagdSrfStruct *Srf, TrivTVDirType Dir)


Description:

Promotes a surface to a trivariate by creating a constant trivariate in the new direction. Dir sets the extended direction (U, V, or W). The resulting trivariate is degenerate in that its speed is zero in the new direction and hence is not regular.

Parameters:

Srf: A surface to promote into a trivariate.
Dir: Direction of promotion, of constant degree. Either U or V or W.


Returned Value:

TrivTVStruct *: The trivariate promoted from Srf.


See Also:

TrivCnvrtCrvToTV

Keywords:




TrivCoerceTVTo

(trivcoer.c:52)

Prototype:

  TrivTVStruct *TrivCoerceTVTo(const TrivTVStruct *TV, CagdPointType PType)


Description:

Coerces a trivariate to point type PType.

Parameters:

TV: To coerce to a new point type PType.
PType: New point type for TV.


Returned Value:

TrivTVStruct *: A new trivariate with PType as its point type.


Keywords:

coercion


TrivCoerceTVsTo

(trivcoer.c:25)

Prototype:

  TrivTVStruct *TrivCoerceTVsTo(const TrivTVStruct *TV, CagdPointType PType)


Description:

Coerces a list of trivariates to point type PType.

Parameters:

TV: To coerce to a new point type PType.
PType: New point type for TV.


Returned Value:

TrivTVStruct *: New trivariates with PType as their point type.


Keywords:

coercion


TrivComposeOneObjectInTVBzr

(compost3.c:355)

Prototype:

  IPObjectStruct *TrivComposeOneObjectInTVBzr(const IPObjectStruct *PObj,
                                              const TrivTVStruct *DeformTV)


Description:

Compose (deform) input object in the given Bezier trivariate. Computation is made precise, using composition operations.

Parameters:

PObj: The object to map through the trivariate. Can be a (list of) curve(s), surface(s) or trivars only.
DeformTV: The mapping/deformation Bezier function from R3 to R3. Note domain might not be [0, 1]^3 - only no internal knots.


Returned Value:

IPObjectStruct *: Mapped and deformed object.


See Also:

TrivFFDTileObjectInTV TrivFFDCtlMeshUsingTV TrivFFDObjectTV TrivComposeTileObjectInTV

Keywords:




TrivComposeTVCrv

(compost3.c:503)

Prototype:

  CagdCrvStruct *TrivComposeTVCrv(const TrivTVStruct *TV,
                                  const CagdCrvStruct *Crv)


Description:

Given curve Crv and trivar TV, computes the composition TV(Crv). Crv must be a three dimensional curve completely contained in the parametric domain of TV.

Parameters:

TV, Crv: The trivar and curve to compose. TV must be a Bezier.


Returned Value:

CagdCrvStruct *: The resulting composition.


See Also:

SymbComposeCrvCrv SymbComposeSrfCrv SymbComposeSrfSrf TrivComposeTVSrf TrivComposeTVTV

Keywords:

composition


TrivComposeTVSrf

(compost3.c:802)

Prototype:

  CagdSrfStruct *TrivComposeTVSrf(const TrivTVStruct *TV,
                                  const CagdSrfStruct *Srf)


Description:

Given surface Srf and trivar TV, computes the composition TV(Srf). Srf must be a three dimensional surface completely contained in the parametric domain of TV.

Parameters:

TV, Srf: The trivar and surface to compose. TV must be a Bezier.


Returned Value:

CagdSrfStruct *: The resulting composition.


See Also:

SymbComposeCrvCrv SymbComposeSrfCrv SymbComposeSrfSrf TrivComposeTVTV

Keywords:

composition


TrivComposeTVTV

(compost3.c:870)

Prototype:

  TrivTVStruct *TrivComposeTVTV(const TrivTVStruct *TV1,
                                const TrivTVStruct *TV2)


Description:

Given two trivariates, computes the composition TV1(TV2). TV2 must be a three dimensional trivariates completely contained in the parametric domain of TV1.

Parameters:

TV1, TV2: The trivariates to compose. TV1 must be a Bezier.


Returned Value:

TrivTVStruct *: The resulting composition.


See Also:

SymbComposeCrvCrv SymbComposeSrfCrv SymbComposeSrfSrf TrivComposeTVCrv TrivComposeTVSrf

Keywords:

composition


TrivComposeTileObjectInTV

(compost3.c:61)

Prototype:

  IPObjectStruct *TrivComposeTileObjectInTV(const IPObjectStruct *PObj,
                                            const TrivTVStruct *DeformTV,
                                            IrtRType UTimes,
                                            IrtRType VTimes,
                                            IrtRType WTimes,
                                            int FitObj,
                                            IrtRType CropBoundaries)


Description:

Tile an input object, in place, (UTimes x VTimes x WTimes) in the given trivariate. Computation is made precise, using composition operations.

Parameters:

PObj: The object to map through the trivariate. Can be a (list of) curve(s) or (trimmed) surface(s) or trivariates only.
DeformTV: The mapping/deformation function from R3 to R3.
UTimes, VTimes, WTimes: Number of times to tile the object in each axis.
FitObj: 2 to rescale PObj tile to precisely fit the domain (UTimes x VTimes x WTimes), 1 to assume PObj is in [0,1]^3 when fitting/tiling domain. 0 to apply the TV mapping directly without transformations.
CropBoundaries: If positive, crop that amount from the tile, when the tile is assumed to be in the unit cube [0, 1]^3.


Returned Value:

IPObjectStruct *: (UTimes x VTimes x WTimes) mapped and deformed objects.


See Also:

TrivFFDTileObjectInTV TrivFFDCtlMeshUsingTV TrivFFDObjectTV TrivComposeTileObjectInTVBzr

Keywords:




TrivComposeTileObjectInTVBzr

(compost3.c:197)

Prototype:

  IPObjectStruct *TrivComposeTileObjectInTVBzr(const IPObjectStruct *PObj,
                                               const TrivTVStruct *DeformTV,
                                               IrtRType UTimes,
                                               IrtRType VTimes,
                                               IrtRType WTimes,
                                               int FitObj)


Description:

Tile an input object, in place, (UTimes x VTimes x WTimes) in the given Bezier trivariate. Computation is made precise, using composition operations.

Parameters:

PObj: The object to map through the trivariate. Can be a (list of) curve(s), surface(s) or trivars only.
DeformTV: The mapping/deformation Bezier function from R3 to R3. Note domain might not be [0, 1]^3 - only no internal knots.
UTimes, VTimes, WTimes: Number of times to tile the object in each axis.
FitObj: 2 to rescale PObj tile to precisely fit the domain (UTimes x VTimes x WTimes), 1 to assume PObj is in [0,1]^3 when fitting/tiling domain. 0 to apply TV mapping directly without any transformations.


Returned Value:

IPObjectStruct *: (UTimes x VTimes x WTimes) mapped and deformed objects.


See Also:

TrivFFDTileObjectInTV TrivFFDCtlMeshUsingTV TrivFFDObjectTV TrivComposeTileObjectInTV

Keywords:




TrivCoverIsoSurfaceUsingStrokes

(mrchtriv.c:305)

Prototype:

  CagdCrvStruct *TrivCoverIsoSurfaceUsingStrokes(TrivTVStruct *CTV,
                                                 int NumStrokes,
                                                 int StrokeType,
                                                 CagdPType MinMaxPwrLen,
                                                 CagdRType StepSize,
                                                 CagdRType IsoVal,
                                                 CagdVType ViewDir)


Description:

Computes a coverage of an iso surface at IsoVal of the trivariate TV using curves along principal curvatures.

Parameters:

CTV: To cover with strokes along principal curvatures of iso surface of value IsoVal.
NumStrokes: Number of strokes to distribute on the implicit surface.
StrokeType: 1 - Draw strokes along minimal principal curvature. 2 - Draw strokes along maximal principal curvature. 3 - Draw strokes along both principal curvatures. 4 - Draw strokes along constant X planes. 5 - Draw strokes along constant Y planes. 6 - Draw strokes along constant Z planes. 7 - Draw strokes along silhouette lines. 8 - Draw strokes orthogonal to silhouette lines. 9 - Draw strokes along both silhouette lines and lines orthogonal to silhouette lines. StrokesType >= 10 equals StrokeType < 10 but also emphasizes the silhouette areas setting longer edges along silhouettes.
MinMaxPwrLen: Arc length of each stroke (randomized in between). a triplet of the form (Min, Max, Power) that determines the length of each stroke as Avg = (Max + Min) / 2, Dev = (Max - Min) / 2 Length = Avg + Dev * Random(0, 1)^ Pwr
StepSize: Steps to take in the piecewise linear approximation.
IsoVal: Of iso surface of TV that coverage is to be computed for.
ViewDir: Direction of view, used for silhouette computation.


Returned Value:

CagdCrvStruct *: A list of curves forming the coverage or NULL if error.


See Also:

MCmprovePointOnIsoSrf MCExtractIsoSurface2

Keywords:




TrivDbg

(triv_dbg.c:28)

Prototype:

  void TrivDbg(const void *Obj)


Description:

Prints trivariates stderr. Should be linked to programs for debugging purposes, so trivariates may be inspected from a debugger.

Parameters:

Obj: A trivariate - to be printed to stderr.


Returned Value:

void


Keywords:

debugging


TrivDbgDsp

(triv_dbg.c:71)

Prototype:

  void TrivDbgDsp(const void *Obj)


Description:

Views trivariates in a display device. Should be linked to programs for debugging purposes, so trivariates may be inspected from the debugger.

Parameters:

Obj: A trivariate - to be displayed.


Returned Value:

void


Keywords:

debugging


TrivDescribeError

(triv_err.c:80)

Prototype:

  const char *TrivDescribeError(TrivFatalErrorType ErrorNum)


Description:

Returns a string describing the given error. Errors can be raised by any member of this triv library as well as other users. Raised error will cause an invokation of TrivFatalError function which decides how to handle this error. TrivFatalError 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


TrivEditSingleTVPt

(trivedit.c:37)

Prototype:

  TrivTVStruct *TrivEditSingleTVPt(const TrivTVStruct *TV,
                                   CagdCtlPtStruct *CtlPt,
                                   int UIndex,
                                   int VIndex,
                                   int WIndex,
                                   CagdBType Write)


Description:

Provides the way to modify/get a single control point into/from a trivariate.

Parameters:

TV: Trivar to be modified/query.
CtlPt: New control point to be substituted into TV. Must carry the same PType as TV if to be written to TV.
UIndex, VIndex, WIndex: n trivar TV's control mesh to substitute/query CtlPt.
Write: If TRUE CtlPt is copied into TV, if FALSE the point is copied from TV to CtlPt.


Returned Value:

TrivTVStruct *: If Write is TRUE, the new modified TV, if WRITE is FALSE, NULL.


Keywords:

trivar editing


TrivEvalCurvature

(trivcurv.c:169)

Prototype:

  CagdBType TrivEvalCurvature(TrivTVCurvEvalGenInfoStruct *TrivTVCurvature,
                              CagdPType Pos,
                              CagdRType *PCurv1,
                              CagdRType *PCurv2,
                              CagdVType PDir1,
                              CagdVType PDir2)


Description:

Evaluates the principal curvatures and principal directions of the isosurface at location Pos in trivariate that was preprocessed by the TrivEvalCurvaturePredule function. Arbitrary number of invokations of this function are possible once TrivEvalCurvaturePredule is called. Also one should invoke TrivEvalCurvaturePostlude once done to release all auxiliary allocated data structures.

Parameters:

TrivTVCurvature: ointer to struct that contains all auxiliary trivariate derivatives, for curvature analysis.
Pos: Location in the parametric space of the trivariate.
PCurv1, PCurv2: The two principal curvatures computed by this function.
PDir1, PDir2: The two principal directions computed by this function.


Returned Value:

CagdBType: TRUE if successful, FALSE otherwise.


See Also:

TrivEvalCurvaturePrelude TrivEvalCurvaturePostlude TrivEvalHessian TrivEvalGradient

Keywords:




TrivEvalGradient

(trivcurv.c:263)

Prototype:

  CagdBType TrivEvalGradient(TrivTVCurvEvalGenInfoStruct *TrivTVCurvature,
                             CagdPType Pos, CagdVType Gradient)


Description:

Evaluates the Gradient of the isosurface at location Pos in trivariate that was preprocessed by the TrivEvalCurvaturePredule function. Arbitrary number of invokations of this function are possible once TrivEvalCurvaturePredule is called. Also one should invoke TrivEvalCurvaturePostlude once done to release all auxiliary allocated data structures.

Parameters:

TrivTVCurvature: ointer to struct that contains all auxiliary trivariate derivatives, for curvature analysis.
Pos: Location in the parametric space of the trivariate.
Gradient: The Gradient computed by this function.


Returned Value:

CagdBType: TRUE if successful, FALSE otherwise.


See Also:

TrivEvalCurvaturePrelude TrivEvalCurvaturePostlude TrivEvalCurvature TrivEvalHessian

Keywords:




TrivEvalHessian

(trivcurv.c:309)

Prototype:

  CagdBType TrivEvalHessian(TrivTVCurvEvalGenInfoStruct
                                *TrivTVCurvature,
                            CagdPType Pos, CagdVType Hessian[3])


Description:

Evaluates the Hessian of the iso-surface at location Pos in trivariate that was preprocessed by the TrivEvalCurvaturePredule function. Arbitrary number of invocations of this function are possible once TrivEvalCurvaturePredule is called. Also one should invoke TrivEvalCurvaturePostlude once done to release all auxiliary allocated data structures.

Parameters:

TrivTVCurvature: ointer to struct that contains all auxiliary trivariate derivatives, for curvature analysis.
Pos: Location in the parametric space of the trivariate.
Hessian: The Hessian computed by this function.


Returned Value:

CagdBType: TRUE if successful, FALSE otherwise.


See Also:

TrivEvalCurvaturePrelude TrivEvalCurvaturePostlude TrivEvalCurvature TrivEvalHessian

Keywords:




TrivEvalTVCurvaturePostlude

(trivcurv.c:48)

Prototype:

  void TrivEvalTVCurvaturePostlude(TrivTVCurvEvalGenInfoStruct *TrivTVCurvature)


Description:

Release all allocated auxiliary trivariate derivatives, for curvature analysis.

Parameters:

TrivTVCurvature: ointer to struct that contains all auxiliary trivariate derivatives, for curvature analysis.


Returned Value:

void


See Also:

TrivEvalTVCurvaturePrelude TrivEvalTVCurvature TrivEvalHessian TrivEvalGradient

Keywords:




TrivEvalTVCurvaturePrelude

(trivcurv.c:91)

Prototype:

  TrivTVCurvEvalGenInfoStruct *TrivEvalTVCurvaturePrelude(const TrivTVStruct *TV)


Description:

Prepare the necessary derivative vector fields of TV for curvature processing at prescribed locations, later on.

Parameters:

TV: to process and prepare for further curvature evaluations.


Returned Value:

TrivTVCurvEvalGenInfoStruct *: Pointer to struct that contains all auxiliary trivariate derivatives, for curvature analysis. NULL if error.


See Also:

TrivEvalTVCurvaturePostlude TrivEvalTVCurvature TrivEvalHessian TrivEvalGradient

Keywords:




TrivExtractSleeveSrf

(trivswep.c:714)

Prototype:

  CagdSrfStruct *TrivExtractSleeveSrf(const TrivTVStruct *TV)


Description:

Extract a sleeve surface out of a trivariate, typically a sweep, by extracting the UMin, VMin, UMax, VMax boundaries of the trivar and merging them into one surface. I.e. A cylinder trivariate will be come a pipe.

Parameters:

TV: The trivariate to extract the sleeve from.


Returned Value:

CagdSrfStruct *: The extracted sleeve,


See Also:



Keywords:




TrivExtrudeTV

(trivextr.c:32)

Prototype:

  TrivTVStruct *TrivExtrudeTV(const CagdSrfStruct *Srf, const CagdVecStruct *Vec)


Description:

Constructs an extrusion trivariate in the Vector direction for the given surface. Input surface can be either a Bspline or a Bezier surface and the resulting output trivariate will be of the same type.

Parameters:

Srf: To exturde in direction specified by Vec.
Vec: Direction as well as magnitude of extursion.


Returned Value:

TrivTVStruct *: An extrusion trivariate volume with Orders of the original Srf order and 2 in the extrusion direction.


See Also:

CagdExtrudeSrf TrivExtrudeTV2

Keywords:

trivariate constructors


TrivExtrudeTV2

(trivextr.c:243)

Prototype:

  TrivTVStruct *TrivExtrudeTV2(const CagdSrfStruct *Srf,
                               const CagdCrvStruct *Crv)


Description:

Constructs an extrusion trivariate along Crv, of the given surface: TV(u, v, t) = Srf(u, v) + Crv(t). Input curve/surface can be either a Bspline or a Bezier surface and the resulting output trivariate will be of the same type.

Parameters:

Srf: To exturde along the curve Crv.
Crv: Curve along which to move Srf. If Crv is a line, reduces to TrivExtrudeTV.


Returned Value:

TrivTVStruct *: A trivariate volume with Orders of the original Srf/Crv orders.


See Also:

TrivExtrudeTV2 CagdExtrudeSrf SymbAlgebraicSumSrf

Keywords:

trivariate constructors


TrivFFDCtlMeshUsingTV

(triv_ffd.c:112)

Prototype:

  void TrivFFDCtlMeshUsingTV(CagdRType **Points,
                             int Length,
                             CagdPointType PType,
                             const TrivTVStruct *DeformTV)


Description:

Deform the given mesh in place, using the mapping that is defined by trivariate DeformTV. Input points that are outside the domain of DeformTV are coerced to the closest boundary. Computation is approximated by mapping (control) points only.

Parameters:

Points: The control mesh.
Length: The length of the vector of Points.
PType: The point type of Points.
DeformTV: The deformation mapping.


Returned Value:

void


See Also:

TrivFFDObjectTV

Keywords:




TrivFFDObjectTV

(triv_ffd.c:178)

Prototype:

  IPObjectStruct *TrivFFDObjectTV(IPObjectStruct *PObj,
                                  const TrivTVStruct *DeformTV)


Description:

Deform an input object, in place, through the given trivariate. Computation is approximated by mapping (control) points only.

Parameters:

PObj: The object to map through the trivariate, in place.
DeformTV: The mapping/deformation function from R3 to R3.


Returned Value:

IPObjectStruct *: PObj, mapped/deformed object, in place.


See Also:

TrivFFDCtlMeshUsingTV TrivFFDTileObjectInTV

Keywords:




TrivFFDTileCropBndries

(triv_ffd.c:596)

Prototype:

  int TrivFFDTileCropBndries(IPObjectStruct *BndryTiles[3][3][3],
                             const IPObjectStruct *Tile,
                             IrtHmgnMatType Mat,
                             IrtRType CropBoundaries)


Description:

Compute the 26 boundary tiles for the given tile, closing the tile at the relevant one or more directions of +/-X, +/-Y and +/-Z.

Parameters:

BndryTiles: The constructed boundary tiles will be kept here.
Tile: The interior tile, assumed to be in [0, 1]^3 volume.
Mat: Matrix to apply to all created tiles.
CropBoundaries: mall positive value less than one. The amount to crop from the tile, when the tile is assumed to be in the unit cube [0, 1]^3.


Returned Value:

int: TRUE if successful, FALSE otherwise.


See Also:

TrivFFDTileObjectInTV TrivComposeTileObjectInTV TrivFFDTileFreeBndries

Keywords:




TrivFFDTileFreeBndries

(triv_ffd.c:686)

Prototype:

  void TrivFFDTileFreeBndries(IPObjectStruct *BndryTiles[3][3][3])


Description:

Free the boundary tiles created by TrivFFDTileCropBndries

Parameters:

BndryTiles: To free.


Returned Value:

void


See Also:

TrivFFDTileCropBndries

Keywords:




TrivFFDTileObjectInTV

(triv_ffd.c:415)

Prototype:

  IPObjectStruct *TrivFFDTileObjectInTV(const IPObjectStruct *PObj,
                                        const TrivTVStruct *DeformTV,
                                        IrtRType UTimes,
                                        IrtRType VTimes,
                                        IrtRType WTimes,
                                        int FitObj,
                                        IrtRType CropBoundaries,
                                        IrtRType MaxEdgeLen)


Description:

Tile an input object, in place, (UTimes x VTimes x WTimes) in the given trivariate. Computation is approximated using (control) points mapping.

Parameters:

PObj: The object to map through the trivariate, in place.
DeformTV: The mapping/deformation function from R3 to R3.
UTimes, VTimes, WTimes: Number of times to tile the object in each axis.
FitObj: 2 to rescale PTile tile to precisely fit the domain (UTimes x VTimes), 1 to assume PTile is in [0,1]^2 when fitting domain, 0 to apply no mapping at all.
CropBoundaries: If positive, crop that amount from the tile, when the tile is assumed to be in the unit cube [0, 1]^3.
MaxEdgeLen: f Positive, makes sure tiles' polygonal edge lengths are not larger than MaxEdgeLen (Tile will be refined).


Returned Value:

IPObjectStruct *: (UTimes x VTimes x WTimes) mapped and deformed objects.


See Also:

TrivFFDCtlMeshUsingTV TrivFFDObjectTV TrivComposeTileObjectInTV TrivFFDTileCropBndries

Keywords:




TrivFatalError

(triv_ftl.c:56)

Prototype:

  void TrivFatalError(TrivFatalErrorType ErrID)


Description:

Trap Triv_lib errors right here. Provides a default error handler for the triv library. Gets an error description using TrivDescribeError, prints it and exit the program using exit.

Parameters:

ErrID: Error type that was raised.


Returned Value:

void


Keywords:

error handling


TrivFreeInverseQueries

(trivinvs.c:252)

Prototype:

  void TrivFreeInverseQueries(struct TrivInverseQueryStruct *Handle)


Description:

Frees the given the inverse queries handle.

Parameters:

Handle: The Handle to free its content.


Returned Value:

void


See Also:

TrivPrepInverseQueries TrivInverseQuery

Keywords:




TrivIGAAddBoundaryFace

(triv_iga.c:2727)

Prototype:

  int TrivIGAAddBoundaryFace(TrivIGAArrangementID ArgmntID,
                             const TrivTVStruct *TV,
                             TrivTVBndryType Boundary,
                             TrivIGANodeBoundaryType NodeBoundary,
                             const char *BoundaryAxisConditions,
                             CagdRType Value)


Description:

Adds a boundary condition to a face in the arrangement.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: Trivariate of the face.
Boundary: The boundary face on the trivariate (UMin, VMax, etc.).
NodeBoundary: IGA boundary condition type.
BoundaryAxisConditions: tring represents the relevant axs, eg. "xy".
Value: Value of the boundary condition.


Returned Value:

int: TRUE on success and FALSE on failure.


See Also:

TrivIGAAddBoundaryFace2

Keywords:




TrivIGAAddBoundaryFace2

(triv_iga2.c:1202)

Prototype:

  int TrivIGAAddBoundaryFace2(TrivIGAArrangementID ArgmntID,
                              const TrivTVStruct *TV,
                              TrivTVBndryType BoundaryType,
                              TrivIGANodeBoundaryType NodeBoundaryType,
                              const char *BoundaryAxisConditions,
                              CagdRType Value)


Description:

Adds a boundary condition to a face in the arrangement.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: Trivariate of the face.
BoundaryType: Type of the boundary face on the trivariate.
NodeBoundaryType: IGA boundary condition type.
BoundaryAxisConditions: tring represents the relevant axes, eg. "xy".
Value: Value of the boundary condition.


Returned Value:

int: TRUE on success and FALSE on failure


See Also:

TrivIGAAddBoundaryFace

Keywords:




TrivIGAAddBoundaryFaceByPt

(triv_iga.c:2814)

Prototype:

  int TrivIGAAddBoundaryFaceByPt(TrivIGAArrangementID ArgmntID,
                                 const TrivTVStruct *TV,
                                 const CagdPType Pt,
                                 TrivIGANodeBoundaryType NodeBoundary,
                                 const char *BoundaryAxisConditions,
                                 CagdRType Value)


Description:

Adds a boundary condition to a face in the arrangement.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: Trivariate owning the face. Can be NULL in which case we search all TVs in arrangment for the closest face.
Pt: A point in space to select the closest boundary.
NodeBoundary: IGA boundary condition type.
BoundaryAxisConditions: tring represents the relevant axes, eg. "xy".
Value: Value of the boundary condition.


Returned Value:

int: TRUE on success and FALSE on failure.


See Also:

TrivIGAAddBoundaryFace2 TrivIGAGetBoundaryFaceByPt

Keywords:




TrivIGAAddBoundaryNode

(triv_iga2.c:1226)

Prototype:

  int TrivIGAAddBoundaryNode(TrivIGAArrangementID ArgmntID,
                             TrivIGATVID TV,
                             int CtrlPointIndex)


Description:

Function is not supported.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: N.S.F.I.
CtrlPointIndex: .S.F.I.


Returned Value:

int: N.S.F.I.


Keywords:




TrivIGAAddMaterial

(triv_iga.c:335)

Prototype:

  TrivIGAMaterialID TrivIGAAddMaterial(TrivIGAArrangementID ArgmntID,
                                       TrivIGAMaterialStruct *Material)


Description:

Adds the given material to the given arrangement if not exists, and updates it otherwise.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
Material: The material


Returned Value:

TrivIGAMaterialID: Material ID or invalid if failed.


Keywords:




TrivIGAAddTrivar

(triv_iga2.c:241)

Prototype:

  TrivIGATVID TrivIGAAddTrivar(TrivIGAArrangementID ArgmntID,
                               const TrivTVStruct *TV,
                               int ID)


Description:

Copy an existing new trivariate and add it to the give arrangement.

Parameters:

ArgmntID: handle on the IGA arrangement to process.
TV: An existing trivariate to add (a copy thereof) to arrangement.
ID: ID to use or -1 to set a new ID.


Returned Value:

TrivIGATVID: INVALID_IGA_TV_ID if error, to TV ID if successful.


Keywords:




TrivIGAApplyDomainAndSeeding

(triv_iga2.c:140)

Prototype:

  static TrivTVStruct *TrivIGAApplyDomainAndSeeding(TrivIGAArrangementID ArgmntID,
                                                    TrivTVStruct *TV)


Description:

Apply, in place, seeding to the given trivariate, following the global arrangement seeding specifications.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: Trivariate to apply seeding to. Used in place.


Returned Value:

TrivTVStruct *: Refined TV, after the seeding was applied.


Keywords:




TrivIGAArrangementComplete

(triv_iga.c:1059)

Prototype:

  int TrivIGAArrangementComplete(TrivIGAArrangementID ArgmntID)


Description:

A function to signal the end of the initialization process - insertion of trivariates into (the fields of) the IGA arrangement.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




TrivIGADataManagerAddTrivariate

(triv_iga.c:3144)

Prototype:

  TrivIGATVID TrivIGADataManagerAddTrivariate(TrivIGAArrangementID ArgmntID,
                                              TrivTVStruct *TV,
                                              int ID)


Description:

Allocates an ID to a given trivariate in the IGA data manager, if the trivariate already exists, its associated ID is returned.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: Pointer to the trivariate.
ID: if non negative, use this ID as the unique ID of TV. Otherwise, assign a unique ID here.


Returned Value:

TrivIGATVID: ID of the trivariate TRUE if successful, and INVALID_IGA_TV_ID otherwise.


Keywords:




TrivIGADataManagerAllocateArrangement

(triv_iga.c:3016)

Prototype:

  TrivIGAArrangementID TrivIGADataManagerAllocateArrangement(
                                                         TrivIGADataManager *DM)


Description:

Allocates an IGA arrangement and associates it with new ID.

Parameters:

DM: GA Data manager


Returned Value:

TrivIGAArrangementID: ID of the new arrangement in success and INVALID_ARRANGEMENT_ID in failure


Keywords:




TrivIGADataManagerFreeArrangement

(triv_iga.c:3106)

Prototype:

  int TrivIGADataManagerFreeArrangement(TrivIGAArrangementID ArrngmntID)


Description:

DeAllocate given arrangement from the data manager.

Parameters:

ArrngmntID: The arrangement ID to deallocate


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




TrivIGADataManagerGetArrangement

(triv_iga.c:3045)

Prototype:

  TrivIGAArrangementStruct *TrivIGADataManagerGetArrangement(
                                                TrivIGAArrangementID ArrngmntID)


Description:

Maps between arrangement ID and its actual structure's address.

Parameters:

ArrngmntID: ID of the arrangement.


Returned Value:

TrivIGAArrangementStruct *: Pointer to the arrangement structure if success and NULL in failure.


Keywords:




TrivIGADataManagerGetArrangementID

(triv_iga.c:3073)

Prototype:

  TrivIGAArrangementID TrivIGADataManagerGetArrangementID(
                                                   TrivIGAArrangementStruct *H)


Description:

Maps between arrangement structure address and its ID.

Parameters:

H: Pointer to the arrangement structure.


Returned Value:

TrivIGAArrangementID: The arrangement id in success and NULL in failure


Keywords:




TrivIGADataManagerGetIGATrivariate

(triv_iga.c:3256)

Prototype:

  TrivIGATVStruct *TrivIGADataManagerGetIGATrivariate(TrivIGATVID TVID)


Description:

Maps between trivariate ID and its structure's address in a given IGA data manager.

Parameters:

TVID: ID of the trivariate.


Returned Value:

TrivIGATVStruct *: Pointer to IGA trivariate structue if successfull and NULL otherwise.


Keywords:




TrivIGADataManagerGetTrivID

(triv_iga.c:3194)

Prototype:

  TrivIGATVID TrivIGADataManagerGetTrivID(const TrivTVStruct *TV)


Description:

Returns the ID of a given trivariate from IGA data manager.

Parameters:

TV: Pointer to the trivariate.


Returned Value:

TrivIGATVID: ID of the trivariate TRUE if successful, and TRIV_IGA_INVALID_TV_ID otherwise.


Keywords:




TrivIGADataManagerGetTrivariate

(triv_iga.c:3230)

Prototype:

  TrivTVStruct *TrivIGADataManagerGetTrivariate(TrivIGATVID TVID)


Description:

Maps between trivariate ID and its structure's address in a given IGA data manager.

Parameters:

TVID: ID of the trivariate.


Returned Value:

TrivTVStruct *: Pointer to the trivariate structue if successfull and NULL otherwise.


Keywords:




TrivIGADescribeError

(triv_iga.c:2609)

Prototype:

  const char *TrivIGADescribeError(TrivIGAErrorType ErrorNum)


Description:

Returns a sting describing the given error.

Parameters:

ErrorNum: Type of the error that was raised.


Returned Value:

const char *: A string describing the error type.


See Also:

TrivIGAGetLastError TrivDescribeError

Keywords:

error handling


TrivIGAExportToXML

(triv_iga_xml.c:678)

Prototype:

  int TrivIGAExportToXML(TrivIGAArrangementID ArgmntID,
                         const char *FileName,
                         const char *TemplateFileName)


Description:

Saves the input IGA arrangement as Febio XML file, loads template file and updates the material, geometry and boundary sections.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
FileName: Output XML file name.
TemplateFileName: emplate XML file.


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




TrivIGAExtrudeTV

(triv_iga2.c:271)

Prototype:

  TrivIGATVID TrivIGAExtrudeTV(TrivIGAArrangementID ArgmntID,
                               const CagdSrfStruct *Srf,
                               const IrtVecType Vec,
                               int ID)


Description:

Constructs a new trivariate and add it to the give arrangement as an extrusion of the given surface.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
Srf: Surface to extrude.
Vec: The extrusion vector.
ID: ID to use or -1 to set a new ID.


Returned Value:

TrivIGATVID: INVALID_IGA_TV_ID if error, to TV ID if successful.


Keywords:




TrivIGAExtrudeTV2

(triv_iga2.c:315)

Prototype:

  TrivIGATVID TrivIGAExtrudeTV2(TrivIGAArrangementID ArgmntID,
                                const CagdSrfStruct *Srf,
                                const CagdCrvStruct *Crv,
                                int ID)


Description:

Constructs a new trivariate and add it to the give arrangement as an extrusion of the given surface along a curve.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
Srf: Surface to extrude.
Crv: The extrusion curve.
ID: ID to use or -1 to set a new ID.


Returned Value:

TrivIGATVID: INVALID_IGA_TV_ID if error, to TV ID if successful.


Keywords:




TrivIGAFreeArrangement

(triv_iga.c:2453)

Prototype:

  int TrivIGAFreeArrangement(TrivIGAArrangementID ArgmntID)


Description:

Free all auxiliary data structure allocated in H.

Parameters:

ArgmntID: A handle on the IGA arrangement to free.


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




TrivIGAGenNeighboringConstraints

(triv_iga2.c:737)

Prototype:

  void TrivIGAGenNeighboringConstraints(TrivIGAArrangementID ArgmntID,
                                        void *CallbackData,
                                        TrivIGANeighboringConstraintCallBackType
                                                  NeighboringConstraintCallBack)


Description:

Construct linear constraints hooking adjacent faces that do not share a common function space.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
CallbackData: Relevant data for the callback function (such as XML information).
NeighboringConstraintCallBack: Call back function to call with the constraint as a string.


Returned Value:

void


Keywords:




TrivIGAGetAllTVs

(triv_iga2.c:585)

Prototype:

  TrivIGATVID *TrivIGAGetAllTVs(TrivIGAArrangementID ArgmntID)


Description:

Returns a list of all trivariates in the given arrangement

Parameters:

ArgmntID: A handle on the IGA arrangement to process.


Returned Value:

TrivIGATVID *: A dynamically allocated vector of IDs, terminated with INVALID_IGA_TV_ID.


Keywords:




TrivIGAGetBoundaryFaceByPtToData

(triv_iga.c:2930)

Prototype:

  int *TrivIGAGetBoundaryFaceByPtToData(TrivIGAArrangementID ArgmntID,
                                        const TrivTVStruct *TV,
                                        const CagdPType Pt,
                                        int *ReturnedIDs)


Description:

Find the face closest to Pt in the arrangement or specific TV.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: Trivariate owning the face. Can be NULl in which case we search all TVs in arrangement.
Pt: A point in space to select the closest boundary.
ReturnedIDs: A list of two integers, (TVID, FaceID).


Returned Value:

int *: A list of two integers, (TVID, FaceID).


See Also:

TrivIGAAddBoundaryFace2 TrivIGAAddBoundaryFaceByPt

Keywords:




TrivIGAGetBzrElementCtrlPts

(triv_iga.c:1379)

Prototype:

  TrivIGACtrlPtStruct *TrivIGAGetBzrElementCtrlPts(
                                           TrivIGAArrangementID ArgmntID,
                                           const TrivTVStruct *TV,
                                           int IndexU,
                                           int IndexV,
                                           int IndexW)


Description:

Returns a dynamically allocated vector of control points of the Bezier trivariate at the designated indices in TV. Assumes TV has open end conditions. Control points will be returned in order, U changing first, W last.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: The Trivar to fetch the control points of one of its Beziers.
IndexU: he Bezier trivariate index in U in TV, starting from zero.
IndexV: he Bezier trivariate index in V in TV, starting from zero.
IndexW: he Bezier trivariate index in W in TV, starting from zero.


Returned Value:

TrivIGACtrlPtStruct *: A vector of control points of the Bezier trivar.


Keywords:




TrivIGAGetCtlPt

(triv_iga2.c:1017)

Prototype:

  CagdCtlPtStruct *TrivIGAGetCtlPt(TrivIGAArrangementID ArgmntID,
                                   int CtlPtID,
                                   CagdCtlPtStruct *CtlPt)


Description:

Fetches one control point from the arrangement. Not efficient!

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
CtlPtID: ID of control point to get.
CtlPt: Fetched control point.


Returned Value:

CagdCtlPtStruct *: Fetched control point, same as CtlPt. NULL if error.


Keywords:




TrivIGAGetCtlPtIDRange

(triv_iga.c:1267)

Prototype:

  int *TrivIGAGetCtlPtIDRange(TrivIGAArrangementID ArgmntID,
                              const TrivTVStruct *TV,
                              int *IDs)


Description:

Returns the range of control point IDs used by this given TV.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: The Trivar to fetch its ID's range.
IDs: Vector of maximal IDs, (Max CtlPts ID, Max Trivars ID).


Returned Value:

int *: Same as IDs parameter - a vector of maximal IDs, as (Max CtlPts ID, Max Trivars ID) if successful, NULL otherwise.


Keywords:




TrivIGAGetEdgeNeighboringTVs

(triv_iga.c:2254)

Prototype:

  int *TrivIGAGetEdgeNeighboringTVs(TrivIGAArrangementID ArgmntID,
                                    const TrivTVStruct *TV)


Description:

Given a TV in some field, returns the edge-neighboring trivariates of TV, if exists.

Parameters:

ArgmntID: handle on the IGA arrangement to process.
TV: Trivar to seek its edge neighbors.


Returned Value:

int *: A TRIV_IGA_INVALID_TV_ID terminated vector of edge neighboring TV IDS or NULL if error.


See Also:

TrivIGAGetFaceNeighboringTVs TrivIGAGetVrtxNeighboringTVs

Keywords:




TrivIGAGetFaceNeighboringTVs

(triv_iga.c:2180)

Prototype:

  int TrivIGAGetFaceNeighboringTVs(TrivIGAArrangementID ArgmntID,
                                   const TrivTVStruct *TV,
                                   TrivIGAAdjacencyInfoStruct *AdjInfo)


Description:

Given a TV in some field, returns the (up to) six facial neighboring trivariates of TV, if exists. Notes: 1. The adjacent TV can be the same as TV if TV is closed in some dir(s). 2. The returned adjacency structure will also state if the adjacent TV needs to be reversed in U or in V or U and V should be reversed so the boundary can be detected as adjacent.

Parameters:

ArgmntID: handle on the IGA arrangement to process.
TV: Trivar to seek its (up to six) neighbors.
AdjInfo: Already allocated vector of six entries to be updated herein. Returns neighboring info for the six face-boundary surfaces of TV, if any. Six neighbors are updated in the following order, Umin, Umax, Vmin, Vmax, Wmin, Wmax.


Returned Value:

int: TRUE if successful, FALSE otherwise.


See Also:

TrivIGAGetVrtxNeighboringTVs TrivIGAGetEdgeNeighboringTVs

Keywords:




TrivIGAGetGlblMaxIDs

(triv_iga.c:1230)

Prototype:

  int *TrivIGAGetGlblMaxIDs(TrivIGAArrangementID ArgmntID, int *IDs)


Description:

Returns the maximal IDS used in this arrangement.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
IDs: Vector to be updated with of maximal IDs.


Returned Value:

int *: Vector of maximal IDs same as IDs parameter, (Max CtlPts ID, Max Trivars ID, Max Arrangement ID) if successful, NULL otherwise.


Keywords:




TrivIGAGetKnotInterval

(triv_iga.c:1452)

Prototype:

  const CagdRType *TrivIGAGetKnotInterval(TrivIGAArrangementID ArgmntID,
                                          const TrivTVStruct *TV,
                                          TrivTVDirType Dir,
                                          int BzrIntervalIndex)


Description:

Returns the knot sequence of TV that is used in the designated Bezier trivar index and direction.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: The Trivar to fetch its knot sequence.
Dir: The direction to fetch the knots: U, V, or W.
BzrIntervalIndex: Index of Bezier trivar, starting from zero.


Returned Value:

const CagdRType *: The list of the (2*Order) knots, or NULL if error.


Keywords:




TrivIGAGetLastError

(triv_iga.c:2576)

Prototype:

  TrivIGAErrorType TrivIGAGetLastError(TrivIGAArrangementID ArgmntID,
                                       int Reset)


Description:

Returns anID describing the given error.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
Reset: TRUE to also reset the last error as a side effect.


Returned Value:

TrivIGAErrorType: An ID with the error type, with TRIV_IGA_ERR_NO_ERROR if no error.


See Also:

TrivIGADescribeError

Keywords:

error handling


TrivIGAGetMaterial

(triv_iga2.c:1078)

Prototype:

  TrivIGAMaterialID TrivIGAGetMaterial(TrivIGAArrangementID ArgmntID,
                                       TrivIGATVID TVID)


Description:

Fetches the material ID of a given TV ID.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TVID: ID of TV to fetch its material ID.


Returned Value:

TrivIGAMaterialID: The material fetched ID.


Keywords:




TrivIGAGetNumBzrElements

(triv_iga.c:1315)

Prototype:

  int TrivIGAGetNumBzrElements(TrivIGAArrangementID ArgmntID,
                               const TrivTVStruct *TV,
                               int *NumU,
                               int *NumV,
                               int *NumW)


Description:

Returns the number of Bezier trivariates that exists along the three axes of (possibly B-spline) trivar TV in the IGA arrangement. Assumes TV has open end conditions.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: The Trivar to fetch how many Bezier trivariates it has.
NumU: Number of Bezier trivariates in U.
NumV: Number of Bezier trivariates in V.
NumW: Number of Bezier trivariates in W.


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




TrivIGAGetTV

(triv_iga2.c:633)

Prototype:

  TrivTVStruct *TrivIGAGetTV(TrivIGAArrangementID ArgmntID, TrivIGATVID TVID)


Description:

Get a pointer to the TV, given its TV ID in the arrangement.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TVID: The TV ID to search with.


Returned Value:

TrivTVStruct *: Found TV or NULL if not found.


Keywords:




TrivIGAGetTVCtlPtsIndices

(triv_iga2.c:970)

Prototype:

  int *TrivIGAGetTVCtlPtsIndices(TrivIGAArrangementID ArgmntID, TrivIGATVID TVID)


Description:

Returns all the indices of all control points of the given TV.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TVID: ID of TV to get all its control points IDs.


Returned Value:

int *: A dynamically allocated vector of all IDS or NULL if error.


Keywords:




TrivIGAGetTVFaceAsSrf

(triv_iga2.c:920)

Prototype:

  CagdSrfStruct *TrivIGAGetTVFaceAsSrf(TrivIGAArrangementID ArgmntID,
                                       TrivIGATVID TVID,
                                       int FaceID)


Description:

Return indices of ALL control points in a face of designated trivariate.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TVID: The TV ID to seek its face.
FaceID: 0 to 5 for (UMin, UMax, VMin, VMax, WMin, WMax)


Returned Value:

CagdSrfStruct *: Sought source of NULL if error.


Keywords:




TrivIGAGetTVFaceCtlPtsIDs

(triv_iga2.c:655)

Prototype:

  int *TrivIGAGetTVFaceCtlPtsIDs(TrivIGAArrangementID ArgmntID,
                                 TrivIGATVID TVID,
                                 int FaceID)


Description:

Return indices of ALL control points in a face of designated trivariate.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TVID: The TV ID to seek its face.
FaceID: 0 to 5 for (UMin, UMax, VMin, VMax, WMin, WMax)


Returned Value:

int *: A vector of all IDs, terminated with -1 or NULL if error.


Keywords:




TrivIGAGetVrtxNeighboringTVs

(triv_iga.c:2365)

Prototype:

  int *TrivIGAGetVrtxNeighboringTVs(TrivIGAArrangementID ArgmntID,
                                    const TrivTVStruct *TV)


Description:

Given a TV in some field, returns the vertex (corner) neighboring trivariates of TV, if exists.

Parameters:

ArgmntID: handle on the IGA arrangement to process.
TV: Trivar to seek its vertex (corner) neighbors.


Returned Value:

int *: A TRIV_IGA_INVALID_TV_ID terminated vector of vertex neighboring TV IDS or NULL if error.


See Also:

TrivIGAGetFaceNeighboringTVs TrivIGAGetEdgeNeighboringTVs

Keywords:




TrivIGALoadMaterialFromXML

(triv_iga2.c:1154)

Prototype:

  int TrivIGALoadMaterialFromXML(TrivIGAArrangementID ArgmntID,
                                 const char *FileName)


Description:

Load the materials defined in the given XML file.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
FileName: Name of material file to load.


Returned Value:

int: Number of materials read.


See Also:

TrivIGALoadMaterialXML

Keywords:




TrivIGALoadMaterialXML

(triv_iga_xml.c:163)

Prototype:

  int TrivIGALoadMaterialXML(const char *FileName,
                             TrivIGAMaterialStruct **Materials,
                             int *NumMaterials)


Description:

Load the materials defined in the given XML file.

Parameters:

FileName: XML file name.
Materials: Array of loaded materials allocated dynamically.
NumMaterials: The number of the loaded materials.


Returned Value:

int: TRUE on success, and FALSE in failure


Keywords:




TrivIGANewArrangement

(triv_iga.c:535)

Prototype:

  int TrivIGANewArrangement(TrivIGAArrangementID *NewArgmntID)


Description:

Creates a new structure to hold the IGA analysis arrangement.

Parameters:

NewArgmntID: If successful, will hold the ID of the newly allocated arrangement.


Returned Value:

int: 0 if error or arrangement ID if valid.


Keywords:




TrivIGANewField

(triv_iga.c:647)

Prototype:

  int TrivIGANewField(TrivIGAArrangementID ArgmntID,
                      const char *FieldAttributes)


Description:

Declares a new field. Every field can consists of several (adjacent or not) trivariates and all subsequent call of TrivIGAAddTrivar2Field will be placed in this new field.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
FieldAttributes: Geometry or scalar/vector data fields.


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




TrivIGANewMaterial

(triv_iga2.c:1123)

Prototype:

  TrivIGAMaterialID TrivIGANewMaterial(TrivIGAArrangementID ArgmntID,
                                       const char *MaterialStr)


Description:

Parses a new material description and create a new material.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
MaterialStr: material description to parse.


Returned Value:

TrivIGAMaterialID: New material ID or TRIV_IGA_INVALID_MATERIAL_ID if failed.


Keywords:




TrivIGANewTV

(triv_iga.c:757)

Prototype:

  TrivIGATVStruct *TrivIGANewTV(TrivIGAArrangementID ArgmntID, TrivTVStruct *TV)


Description:

Inserts a new trivariate into the IGA arrangement, in the current field, in place.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: The Trivar to insert into the currently defined field, in place.


Returned Value:

TrivIGATVStruct *: The allocated IGA TV, or NULL if error.


Keywords:




TrivIGAParseMaterial

(triv_iga.c:256)

Prototype:

  TrivIGAMaterialStruct *TrivIGAParseMaterial(const char *MaterialStr)


Description:

Creates a new material and initializes it. Updates it otherwise.

Parameters:

MaterialStr: tring representing the material in the following format id = , name = , type = , attrib1 = , ...... where id, name, type attributes are must.


Returned Value:

TrivIGAMaterialStruct *: new created material


Keywords:




TrivIGAPrintTVContent

(triv_iga.c:1107)

Prototype:

  int TrivIGAPrintTVContent(TrivIGAArrangementID ArgmntID,
                            const TrivTVStruct *TV)


Description:

A debugging function to dump to stderr, the content of the given TV.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: The Trivar to print to stderr.


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




TrivIGASetCtrlPtsPositions

(triv_iga.c:1627)

Prototype:

  int TrivIGASetCtrlPtsPositions(TrivIGAArrangementID ArgmntID,
                                 int NumCtrlPts,
                                 const TrivIGACtrlPtStruct *Vals)


Description:

A modifier function to replace control points' values in an arrangement, with the values as specified by Vals. The control points are identified by their unique IDs and must all be in some TV(s).

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
NumCtrlPts: Length of vector Vals.
Vals: Vector of control points to set the relevant control points of TV with. The control point type in Vals prescribes how many (Coord[i], ID[i]) pairs are in Vals which can be arbitrary, as a regular int value. The values are set by identified the ID in TV, for each (Coord[i], ID[i]) pair.


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




TrivIGASetDefaultDomain

(triv_iga2.c:92)

Prototype:

  int TrivIGASetDefaultDomain(TrivIGAArrangementID ArgmntID,
                              TrivTVDirType Dir,
                              CagdRType Min,
                              CagdRType Max)


Description:

Sets the default domain of all to-be-entered trivariates into the arrangement in the given direction (u, V, or W). If TMax <= TMin, then this option is disabled (default) and the doamin is kept as it is inserted into the arrangement.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
Dir: U, V, W direction to set the default domain to.
Min, Max: The domain to set.


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




TrivIGASetDefaultSeeding

(triv_iga2.c:34)

Prototype:

  int TrivIGASetDefaultSeeding(TrivIGAArrangementID ArgmntID,
                               TrivTVDirType Dir,
                               CagdRType Alpha,
                               int NumIntervals)


Description:

Sets the default seeding of all to-be-entered trivariates into the arrangement in the given direction (u, V, or W).

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
Dir: U, V, W direction to set the default seeding to.
Alpha: Ratio of last interval's length divided by first interval length, in set direction Dir.
NumIntervals: Number of interval to introduce.


Returned Value:

int: The number of intervals that will be introduced in that axes.


Keywords:




TrivIGATDegreeRaise

(triv_iga2.c:546)

Prototype:

  TrivIGATVStruct *TrivIGATDegreeRaise(TrivIGAArrangementID ArgmntID,
                                       TrivIGATVID TVID,
                                       TrivTVDirType Dir)


Description:

Degree raise a given TV (ID) in the arrangement.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TVID: ID of the TV to degree raise in the arrangement.
Dir: Degree raising direction - U, V or W.


Returned Value:

TrivIGATVStruct *: Reference to the IGA TV degree raised, or NULL if error.


Keywords:




TrivIGATVEvalBasis

(triv_iga.c:1974)

Prototype:

  CagdRType *TrivIGATVEvalBasis(TrivIGAArrangementID ArgmntID,
                                const TrivTVStruct *TV,
                                TrivIGAEvalType EvalType,
                                TrivTVDirType Dir,
                                int Index,
                                CagdRType t,
                                CagdRType *Basis)


Description:

Evaluate the basis function values of given TV at the given location. The evaluation location is identified by the relevant Bezier trivar (using IndexU/V/W) and the parameter values that are always normalized to be between zero and one.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: Trivar to evaluation a one location.
EvalType: What to evaluate: position, derivatives, normals, etc.
Dir: Direction to evaluate the basic function - U, V or W.
Index: The Bezier trivariate index in Dir in TV, starting from zero.
t: Parameter values to evaluate the designated Bezier trivar at, in Dir, in [0, 1].
Basis: Preallocated vector of size Order in Dir in TV to hold the resulting basis function values. Same as returned value.


Returned Value:

CagdRType *: A vector of Order values in Dir in TV holding the relevant basis function values, or NULL if error. Same as Basis parameter.


Keywords:




TrivIGATVEvalToData

(triv_iga.c:1681)

Prototype:

  const TrivIGACtrlPtStruct *TrivIGATVEvalToData(TrivIGAArrangementID ArgmntID,
                                                 const TrivTVStruct *TV,
                                                 TrivIGAEvalType EvalType,
                                                 int IndexU,
                                                 int IndexV,
                                                 int IndexW,
                                                 CagdRType U,
                                                 CagdRType V,
                                                 CagdRType W,
                                                 TrivIGACtrlPtStruct *CtlPt)


Description:

Evaluate the given TV at the given location. The evaluation location is identified by the relevant Bezier trivar (using IndexU/V/W) and the parameter values that are always normalized to be between zero and one.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TV: Trivar to evaluation a one location.
EvalType: What to evaluate: position, derivatives, normals, etc.
IndexU: The Bezier trivariate index in U in TV, starting from zero.
IndexV: The Bezier trivariate index in V in TV, starting from zero.
IndexW: The Bezier trivariate index in W in TV, starting from zero.
U, V, W: Parameters values to evaluate the designated Bezier trivar at. In [0, 1] only. For many evaluations, U varying first and W last will yield the best performance.
CtlPt: A control point to update with the evaluation.


Returned Value:

const TrivIGACtrlPtStruct *: A control point


Keywords:




TrivIGATVFromSurfaces

(triv_iga2.c:418)

Prototype:

  TrivIGATVID TrivIGATVFromSurfaces(TrivIGAArrangementID ArgmntID,
                                    const CagdSrfStruct *SrfList,
                                    int OtherOrder,
                                    CagdBType IsInterpolating,
                                    int ID)


Description:

Constructs a new trivariate and add it to the give arrangement as a trivariate through surfaces of the given ordered surfaces.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
SrfList: List of surfaces to construct a trivariate with.
OtherOrder: Other, third, order of trivariate.
IsInterpolating: TRUE for the trivariate to interpolate the surfaces, FALSE to approximate them.
ID: ID to use or -1 to set a new ID.


Returned Value:

TrivIGATVID: INVALID_IGA_TV_ID if error, to TV ID if successful.


Keywords:




TrivIGATVFromSurfaces2

(triv_iga2.c:462)

Prototype:

  TrivIGATVID TrivIGATVFromSurfaces2(TrivIGAArrangementID ArgmntID,
                                     const CagdSrfStruct *Srf,
                                     IrtHmgnMatType Transforms[],
                                     int NumTransforms,
                                     unsigned int OtherOrder,
                                     CagdBType IsInterpolating,
                                     int ID)


Description:

Constructs a new trivariate and add it to the give arrangement as a trivariate through surfaces of the given ordered transformations of Srf.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
Srf: Base surface to transform in space & skin a volume thru.
Transforms: Vector of transformation matrices to apply to Srf.
NumTransforms: ize of vector Transforms.
OtherOrder: Other order to use, in the skinning direction.
IsInterpolating: RUE to interpolate surfaces, FALSE to approximate them.
ID: ID to use or -1 to set a new ID.


Returned Value:

TrivIGATVID: INVALID_IGA_TV_ID if error, to TV ID if successful.


Keywords:




TrivIGATVRefine

(triv_iga2.c:501)

Prototype:

  TrivIGATVStruct *TrivIGATVRefine(TrivIGAArrangementID ArgmntID,
                                   TrivIGATVID TVID,
                                   TrivTVDirType Dir,
                                   CagdRType t)


Description:

Refines a given TV (ID) in the arrangement.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
TVID: ID of the TV to refine in the arrangement.
Dir: Refinement direction - U, V or W.
t: Parameter at which to insert the knot.


Returned Value:

TrivIGATVStruct *: Reference to the IGA TV refined, or NULL if error.


Keywords:




TrivIGATVofRevol

(triv_iga2.c:365)

Prototype:

  TrivIGATVID TrivIGATVofRevol(TrivIGAArrangementID ArgmntID,
                               const CagdSrfStruct *Srf,
                               const IrtPtType AxisPoint,
                               const IrtVecType AxisVector,
                               CagdRType StartAngle,
                               CagdRType EndAngle,
                               CagdBType IsRational,
                               int ID)


Description:

Constructs a new trivariate and add it to the give arrangement as a volume of revolution of the given surface.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
Srf: Surface to rotate.
AxisPoint, AxisVector: xis line of rotation's prescription.
StartAngle: Starting angle in degs., 0 for a full circle.
EndAngle: Terminating angle in degs., 360 for a full circle.
IsRational: TRUE to construct a rational precise volume of revolution, FALSE for polynomial approximation.
ID: ID to use or -1 to set a new ID.


Returned Value:

TrivIGATVID: INVALID_IGA_TV_ID if error, to TV ID if successful.


Keywords:




TrivIGAUpdateCtrlPtsPositions

(triv_iga.c:1582)

Prototype:

  int TrivIGAUpdateCtrlPtsPositions(TrivIGAArrangementID ArgmntID,
                                    int NumCtrlPts,
                                    const TrivIGACtrlPtStruct *DeltaVals)


Description:

A modifier function to update control points in an arrangement, with the delta values as specified by DeltaVals. The control points are identified by their unique IDs and must all be in some TV(s).

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
NumCtrlPts: Length of vector DeltaVals.
DeltaVals: Vector of control points with delta values to set the relevant control points of TV with. The control point type in Vals prescribes how many (Coord[i], ID[i]) pairs are in Vals which can be arbitrary, as a regular int value. The values are set by identified the ID in TV, for each (Coord[i], ID[i]) pair.


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




TrivIGAUpdateTV

(triv_iga.c:883)

Prototype:

  TrivIGATVStruct *TrivIGAUpdateTV(TrivIGAArrangementID ArgmntID,
                                   TrivTVStruct *ExistingTV,
                                   TrivTVStruct *NewTV)


Description:

Inserts a new trivariate into the IGA arrangement, in the current field.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
ExistingTV: Current TV in the arrangement to update. Will be freed.
NewTV: New TV to replace the existing TV.


Returned Value:

TrivIGATVStruct *: Reference to the updated IGA TV, or NULL if error.


Keywords:




TrivIgaGenOneFaceNeighboringConstraints

(triv_iga2.c:804)

Prototype:

  int TrivIgaGenOneFaceNeighboringConstraints(
                                       TrivIGAArrangementID ArgmntID,
                                       TrivIGANeighboringConstraintCallBackType
                                                 NeighboringConstraintCallBack,
                                       const TrivTVStruct *TV1,
                                       int FaceID1,
                                       const TrivTVStruct *TV2,
                                       int FaceID2,
                                       void *CallbackData)


Description:

Construct linear constraints hooking one adjacent face that does not share a common function space with its neighbor while being the same.

Parameters:

ArgmntID: A handle on the IGA arrangement to process.
NeighboringConstraintCallBack: Call back function to call with the constraint as a string.
TV1, FaceID1: Description of first face.
TV2, FaceID2: Description of second face.
CallbackData: Relevant data for the callback function (such as XML information).


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




TrivInterpTrivar

(trinterp.c:30)

Prototype:

  TrivTVStruct *TrivInterpTrivar(const TrivTVStruct *TV)


Description:

Interpolates control points of given trivariate, preserving the order and continuity of the original trivariate.

Parameters:

TV: Trivariate to interpolate its control mesh.


Returned Value:

TrivTVStruct *: The interpolating trivariate.


See Also:

TrivTVInterpPts TrivTVInterpolate

Keywords:

interpolation


TrivInverseQuery

(trivinvs.c:140)

Prototype:

  int TrivInverseQuery(struct TrivInverseQueryStruct *Handle,
                       const CagdRType *XYZPos,
                       CagdRType *UVWParams,
                       int InitialGuess)


Description:

Given an (x,y,z) position, compute the (u,v,w) for the trivar used to create the inverse query handle, if any.

Parameters:

Handle: The inverse query handle.
XYZPos: New xyz position to query.
UVWParams: u,v,w result. Contains an initial u,v,w guess when called.
InitialGuess: Non-zero if initial (u,v,w) guess is valid.


Returned Value:

int: Number of solutions (0 or 1).


See Also:

TrivPrepInverseQueries TrivFreeInverseQueries TrivInverseQueryPolys

Keywords:




TrivInverseQueryPolys

(trivinvs.c:286)

Prototype:

  int TrivInverseQueryPolys(IPObjectStruct *PlObj, const TrivTVStruct *TV)


Description:

Computes UVW values of the given polygonal data that is assumed to be in the domain of TV. UVW values as saved as two attributes: "uvvals" and "wval".

Parameters:

PlObj: olygons to update their vertices with UVW params in TV.
TV: To compute the XYZ to UVW inverse transform.


Returned Value:

int: Zero if successful, otherwise number of vertices failing.


See Also:

TrivInverseQuery

Keywords:




TrivIsTVClosed

(triv_gen.c:945)

Prototype:

  CagdBType TrivIsTVClosed(const TrivTVStruct *TV, int Dim)


Description:

Examines if the given trivariate is closed (i.e. minimal surface equals maximal surface)in the given dimension, Dim.

Parameters:

TV: B-spline trivariate to examine if closed in given Dim.
Dim: 0, 1, 2 for U, V,W direction to check if closed.


Returned Value:

CagdBType: TRUE if TV is closed in Dim, FALSE otherwise.


See Also:

TrivTVOpenEnd

Keywords:




TrivLoadVolumeIntoTV

(mrch_run.c:1111)

Prototype:

  TrivTVStruct *TrivLoadVolumeIntoTV(const char *FileName,
                                     int DataType,
                                     IrtVecType VolSize,
                                     IrtVecType Orders)


Description:

Loads a volumetric data set as a trivariate function of prescribed orders. Uniform open end conditions are created for it.

Parameters:

FileName: To load the trivariate data set from.
DataType: Type of scalar value in volume data file. Can be one of: 1 - Regular ascii (separated by while spaces. 2 - Two bytes short integer. 3 - Four bytes long integer. 4 - One byte (char) integer. 5 - Four bytes float. 6 - Eight bytes double.
VolSize: Dimensions of trivariate volume.
Orders: Orders of the three axis of the volume (in U, V, and W).


Returned Value:

TrivTVStruct *: Loaded trivariate, or NULL if error.


Keywords:




TrivMakeTVArrngmntCompatible

(triv_adj.c:845)

Prototype:

  TrivTVStruct *TrivMakeTVArrngmntCompatible(const TrivTVStruct *TVList)


Description:

Given a list of trivariates with adjacency information and modification flags, make adjacent trivariates compatible with degree raise and refinement.

Parameters:

TVList: A List of trivariates in which each trivariate is to be made compatible with all of its adjacent neighbouring trivariates.


Returned Value:

TrivTVStruct *: The compatible equivalent list.


See Also:

TrivTVMarkAdjacencyInfo

Keywords:




TrivMakeTVsCompatible

(trivcmpt.c:93)

Prototype:

  CagdBType TrivMakeTVsCompatible(TrivTVStruct **TV1,
                                  TrivTVStruct **TV2,
                                  CagdBType SameUOrder,
                                  CagdBType SameVOrder,
                                  CagdBType SameWOrder,
                                  CagdBType SameUKV,
                                  CagdBType SameVKV,
                                  CagdBType SameWKV)


Description:

Given two trivariates, makes them compatible by: 1. Coercing their point type to be the same. 2. Making them have the same tri-variate type. 3. Raising the degree of the lower one to be the same as the higher. 4. Refining them to a common knot vector (If Bspline and SameOrder). Note 3 is performed if SameOrder TRUE, 4 if SameKV TRUE. Both trivariates are modified IN PLACE.

Parameters:

TV1, TV2: Two surfaces to be made compatible, in place.
SameUOrder: If TRUE, this routine make sure they share the same U order.
SameVOrder: If TRUE, this routine make sure they share the same V order.
SameWOrder: If TRUE, this routine make sure they share the same W order.
SameUKV: If TRUE, this routine make sure they share the same U knot vector and hence continuity. *
SameVKV: If TRUE, this routine make sure they share the same V knot vector and hence continuity.
SameWKV: If TRUE, this routine make sure they share the same W knot vector and hence continuity.


Returned Value:

CagdBType: TRUE if successful, FALSE otherwise.


Keywords:

compatibility


TrivMakeTVsCompatibleDomain

(trivcmpt.c:28)

Prototype:

  int TrivMakeTVsCompatibleDomain(const TrivTVStruct *TV1, TrivTVStruct **TV2)


Description:

Maps the domain of the second trivariate TV2 to that of TV1.

Parameters:

TV1: Trivariate to use its domain.
TV2: Trivariate to change its domain to be the same as TV1.


Returned Value:

int: TRUE if successful.


See Also:



Keywords:




TrivMergeTVTV

(triv_aux.c:932)

Prototype:

  TrivTVStruct *TrivMergeTVTV(const TrivTVStruct *CTV1,
                              const TrivTVStruct *CTV2,
                              TrivTVDirType Dir,
                              CagdBType Discont)


Description:

Merges two trivariates into along diretion Dir.

Parameters:

CTV1: To connect to CTV2's starting boundary at its end.
CTV2: To connect to CTV1's end boundary at its start.
Dir: Direction the merge should take place.
Discont: If TRUE, assumes the merged "edge" is discontinuous.


Returned Value:

TrivTVStruct *: The merged trivariate.


See Also:

MvarMergeTVList

Keywords:




TrivNSPrimBox

(trivprim.c:487)

Prototype:

  TrivTVStruct *TrivNSPrimBox(CagdRType MinX,
                              CagdRType MinY,
                              CagdRType MinZ,
                              CagdRType MaxX,
                              CagdRType MaxY,
                              CagdRType MaxZ)


Description:

A trivariate constructor of a box, parallel to main axes.

Parameters:

MinX, MinY, MinZ: Minimum range of box trivariate.
MaxX, MaxY, MaxZ: Maximum range of box trivariate.


Returned Value:

TrivTVStruct *: A trivariate of a box model.


See Also:

TrivNSPrimGenBox TrivNSPrimCone TrivNSPrimCone2 TrivNSPrimCylinder TrivNSPrimSphere TrivNSPrimTorus

Keywords:




TrivNSPrimCone

(trivprim.c:640)

Prototype:

  TrivTVStruct *TrivNSPrimCone(const CagdVType Center,
                               CagdRType Radius,
                               CagdRType Height,
                               CagdBType Rational,
                               CagdRType InternalCubeSize)


Description:

A trivariate constructor of a cone, centered at Center with radius Radius, and a Height height. The cone is built from 5 ruled trivariates. Note the cone will be (only) at the apex.

Parameters:

Center: Of the cone.
Radius: Of the cone.
Height: Of the cone.
Rational: RUE for precise rational, FALSE for polynomial approximation.
InternalCubeSize: ize of the internal cube trivariate edge.


Returned Value:

TrivTVStruct *: A list of 5 trivariates, representing the cone.


See Also:

TrivNSPrimBox TrivNSPriCmone2 TrivNSPrimCylinder TrivNSPrimSphere TrivNSPrimTorus

Keywords:




TrivNSPrimCone2

(trivprim.c:675)

Prototype:

  TrivTVStruct *TrivNSPrimCone2(const CagdVType Center,
                                CagdRType MajorRadius,
                                CagdRType MinorRadius,
                                CagdRType Height,
                                CagdBType Rational,
                                CagdRType InternalCubeSize)


Description:

A trivariate constructor of a truncated cone, centered at Center with major radius MajorRadius and minor radius MinorRadius, and a Height height. The cone is built from 5 non singular ruled trivariates.

Parameters:

Center: Of the cone.
MajorRadius: Of the cone.
MinorRadius: Of the cone.
Height: Of the cone.
Rational: RUE for precise rational, FALSE for polynomial approximation.
InternalCubeSize: ize of the internal cube trivariate edge.


Returned Value:

TrivTVStruct *: A list of 5 trivariates, representing the cone.


See Also:

TrivNSPrimBox TrivNSPrimCone TrivNSPrimCylinder TrivNSPrimSphere TrivNSPrimTorus

Keywords:




TrivNSPrimCylinder

(trivprim.c:582)

Prototype:

  TrivTVStruct *TrivNSPrimCylinder(const CagdVType Center,
                                   CagdRType Radius,
                                   CagdRType Height,
                                   CagdBType Rational,
                                   CagdRType InternalCubeSize)


Description:

A trivariate constructor of a cylinder, centered at Center with radius Radius, and a Height height. The cylinder is built from 5 non singular ruled trivariates.

Parameters:

Center: Of the cylinder.
Radius: Of the cylinder.
Height: Of the cylinder.
Rational: RUE for precise rational, FALSE for polynomial approximation.
InternalCubeSize: ize of the internal cube trivariate edge.


Returned Value:

TrivTVStruct *: A list of 5 trivariates, representing the cylinder.


See Also:

TrivNSPrimBox TrivNSPrimCone TrivNSPrimCone2 TrivNSPrimSphere TrivNSPrimTorus

Keywords:




TrivNSPrimGenBox

(trivprim.c:531)

Prototype:

  TrivTVStruct *TrivNSPrimGenBox(const CagdPType P000,
                                 const CagdPType P001,
                                 const CagdPType P010,
                                 const CagdPType P011,
                                 const CagdPType P100,
                                 const CagdPType P101,
                                 const CagdPType P110,
                                 const CagdPType P111)


Description:

A trivariate constructor of a general box, give 8 corners. No check is made that the Jacobian is valid here.

Parameters:

P000, P001, P010, P011, P100, P101, P110, P111: 8 corners of the generalzied cube.


Returned Value:

TrivTVStruct *: A trivariate of a generalized box model.


See Also:

TrivNSPrimBox TrivNSPrimCone TrivNSPrimCone2 TrivNSPrimCylinder TrivNSPrimSphere TrivNSPrimTorus

Keywords:




TrivNSPrimSphere

(trivprim.c:740)

Prototype:

  TrivTVStruct *TrivNSPrimSphere(const CagdVType Center,
                                 CagdRType Radius,
                                 CagdBType Rational,
                                 CagdRType InternalCubeSize)


Description:

A trivariate constructor of a ball, centered at Center and radius Radius, built from 7 non singular trivariates, an inner cube and 6 ruled trivariate between patches of the ball's outer sphere surface and the cube faces.

Parameters:

Center: Of the ball.
Radius: Of the ball.
Rational: RUE for precise rational, FALSE for polynomial approximation.
InternalCubeSize: ize of the internal cube trivariate edge.


Returned Value:

TrivTVStruct *: A list of 7 trivariates, representing the sphere.


See Also:

TrivNSPrimBox TrivNSPrimCone TrivNSPrimCone2 TrivNSPrimCylinder TrivNSPrimTorus TrivNSPrimSphere

Keywords:




TrivNSPrimTorus

(trivprim.c:863)

Prototype:

  TrivTVStruct *TrivNSPrimTorus(const CagdVType Center,
                                CagdRType MajorRadius,
                                CagdRType MinorRadius,
                                CagdBType Rational,
                                CagdRType InternalCubeSize)


Description:

A trivariate constructor of a torus, centered at Center with major radius MajorRadius and minor radius MinorRadius. The torus is built from 5 non singular trivariates of revolution.

Parameters:

Center: Of the torus.
MajorRadius: Of the torus.
MinorRadius: Of the torus.
Rational: RUE for precise rational, FALSE for polynomial approximation.
InternalCubeSize: ize of the internal cube trivariate edge.


Returned Value:

TrivTVStruct *: A list of 5 trivariates, representing the torus.


See Also:

TrivNSPrimBox TrivNSPrimCone TrivNSPrimCone2 TrivNSPrimCylinder TrivNSPrimSphere

Keywords:




TrivParamInDomain

(triv_aux.c:252)

Prototype:

  CagdBType TrivParamInDomain(const TrivTVStruct *TV,
                              CagdRType t,
                              TrivTVDirType Dir)


Description:

Given a tri-variate and a domain - validate it.

Parameters:

TV: To make sure t is in its Dir domain.
t: Parameter value to verify.
Dir: Direction. Either U or V or W.


Returned Value:

CagdBType: TRUE if in domain, FALSE otherwise.


Keywords:

trivariates


TrivParamsInDomain

(triv_aux.c:288)

Prototype:

  CagdBType TrivParamsInDomain(const TrivTVStruct *TV,
                               CagdRType u,
                               CagdRType v,
                               CagdRType w)


Description:

Given a tri-variate and a domain - validate it.

Parameters:

TV: To make sure (u, v, w) is in its domain.
u, v, w: To verify if it is in TV's parametric domain.


Returned Value:

CagdBType: TRUE if in domain, FALSE otherwise.


Keywords:

trivariates


TrivPlaneFrom4Points

(geomat4d.c:44)

Prototype:

  int TrivPlaneFrom4Points(const TrivP4DType Pt1,
                           const TrivP4DType Pt2,
                           const TrivP4DType Pt3,
                           const TrivP4DType Pt4,
                           TrivPln4DType Plane)


Description:

Computes a hyperplane in four space through the given four points. Based on a direct solution in Maple of:
 with(linalg);
 readlib(C);

 d := det( matrix( [ [x - x1, y - y1, z - z1, w - w1],
                     [x2 - x1, y2 - y1, z2 - z1, w2 - w1],
                     [x3 - x2, y3 - y2, z3 - z2, w3 - w2],
                     [x4 - x3, y4 - y3, z4 - z3, w4 - w3]] ) );
 coeff( d, x );
 coeff( d, y );
 coeff( d, z );
 coeff( d, w );


Parameters:

Pt1, Pt2, Pt3, Pt4: The four points the plane should go through.
Plane: Where the result should be placed.


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:

hyper plane plane


TrivPrepInverseQueries

(trivinvs.c:81)

Prototype:

  struct TrivInverseQueryStruct *TrivPrepInverseQueries(const TrivTVStruct
                                                                       *Trivar)


Description:


Create a handle that can be used for efficient inreverse queries (given an (x,y,z) Euclidean position get (u,v,w)) in trivariate.

Parameters:

Trivar: The trivar.


Returned Value:

struct TrivInverseQueryStruct *: Handle for retrieval of results.


See Also:

TrivInverseQuery TrivFreeInverseQueries

Keywords:




TrivPrimCone

(trivprim.c:268)

Prototype:

  TrivTVStruct *TrivPrimCone(const CagdVType Center,
                             CagdRType Radius,
                             CagdRType Height,
                             CagdBType Rational)


Description:

A trivariate constructor of a cone, centered at Center with radius Radius, and a Height height. The cone is built from a singular (on boundary) ruled trivariate. Note the cone will also be singular at the apex.

Parameters:

Center: Of the cone.
Radius: Of the cone.
Height: Of the cone.
Rational: RUE for precise rational, FALSE for polynomial approximation.


Returned Value:

TrivTVStruct *: A trivariate, representing the cone.


See Also:

TrivPrimBox TrivPriCmone2 TrivPrimCylinder TrivPrimSphere TrivPrimTorus TrivNSPrimCone

Keywords:




TrivPrimCone2

(trivprim.c:300)

Prototype:

  TrivTVStruct *TrivPrimCone2(const CagdVType Center,
                              CagdRType MajorRadius,
                              CagdRType MinorRadius,
                              CagdRType Height,
                              CagdBType Rational)


Description:

A trivariate constructor of a truncated cone, centered at Center with major radius MajorRadius and minor radius MinorRadius, and a Height height. The cone is built from a singular (on boundary) ruled trivariate.

Parameters:

Center: Of the cone.
MajorRadius: Of the cone.
MinorRadius: Of the cone.
Height: Of the cone.
Rational: RUE for precise rational, FALSE for polynomial approximation.


Returned Value:

TrivTVStruct *: A trivariate, representing the cone.


See Also:

TrivPrimBox TrivPrimCone TrivPrimCylinder TrivPrimSphere TrivPrimTorus TrivNSPrimCone2

Keywords:




TrivPrimCylinder

(trivprim.c:223)

Prototype:

  TrivTVStruct *TrivPrimCylinder(const CagdVType Center,
                                 CagdRType Radius,
                                 CagdRType Height,
                                 CagdBType Rational)


Description:

A trivariate constructor of a cylinder, centered at Center with radius Radius, and a Height height. The cylinder is built from a singular (on boundary) ruled trivariate.

Parameters:

Center: Of the cylinder.
Radius: Of the cylinder.
Height: Of the cylinder.
Rational: RUE for precise rational, FALSE for polynomial approximation.


Returned Value:

TrivTVStruct *: A trivariate, representing the cylinder.


See Also:

TrivPrimBox TrivPrimCone TrivPrimCone2 TrivPrimSphere TrivPrimTorus TrivPrimCylinder

Keywords:




TrivPrimSphere

(trivprim.c:350)

Prototype:

  TrivTVStruct *TrivPrimSphere(const CagdVType Center,
                               CagdRType Radius,
                               CagdBType Rational)


Description:

A trivariate constructor of a ball, centered at Center and radius Radius, built from a singular in the interior (axes) trivariate.

Parameters:

Center: Of the ball.
Radius: Of the ball.
Rational: RUE for precise rational, FALSE for polynomial approximation.


Returned Value:

TrivTVStruct *: A trivariate, representing the sphere.


See Also:

TrivPrimBox TrivPrimCone TrivPrimCone2 TrivPrimCylinder TrivPrimTorus TrivNSPrimSphere

Keywords:




TrivPrimSphere2

(trivprim.c:392)

Prototype:

  TrivTVStruct *TrivPrimSphere2(const CagdVType Center,
                                CagdRType Radius,
                                CagdBType Rational)


Description:

A trivariate constructor of a ball, centered at Center and radius Radius, built from a single non singular trivariate in the interior.

Parameters:

Center: Of the ball.
Radius: Of the ball.
Rational: RUE for precise rational, FALSE for polynomial approximation.


Returned Value:

TrivTVStruct *: A single trivariate, representing the sphere.


See Also:

TrivNSPrimBox TrivNSPrimCone TrivNSPrimCone2 TrivNSPrimCylinder TrivNSPrimTorus TrivNSPrimSphere

Keywords:




TrivPrimTorus

(trivprim.c:438)

Prototype:

  TrivTVStruct *TrivPrimTorus(const CagdVType Center,
                              CagdRType MajorRadius,
                              CagdRType MinorRadius,
                              CagdBType Rational)


Description:

A trivariate constructor of a torus, centered at Center with major radius MajorRadius and minor radius MinorRadius. The torus is built from a trivariate.

Parameters:

Center: Of the torus.
MajorRadius: Of the torus.
MinorRadius: Of the torus.
Rational: RUE for precise rational, FALSE for polynomial approximation.


Returned Value:

TrivTVStruct *: A trivariate, representing the torus.


See Also:

TrivPrimBox TrivPrimCone TrivPrimCone2 TrivPrimCylinder TrivPrimSphere TrivNSPrimTorus

Keywords:




TrivPwrTVNew

(triv_gen.c:265)

Prototype:

  TrivTVStruct *TrivPwrTVNew(int ULength,
                             int VLength,
                             int WLength,
                             CagdPointType PType)


Description:

Allocates the memory required for a new power basis trivariate.

Parameters:

ULength: Number of control points in the U direction.
VLength: Number of control points in the V direction.
WLength: Number of control points in the W direction.
PType: Type of control points (E2, P3, etc.).


Returned Value:

TrivTVStruct *: An uninitialized freeform trivariate power basis.


See Also:

TrivBzrTVNew TrivBspTVNew TrivTVNew

Keywords:

trivariates allocation


TrivRuledTV

(trivruld.c:36)

Prototype:

  TrivTVStruct *TrivRuledTV(const CagdSrfStruct *CSrf1,
                            const CagdSrfStruct *CSrf2,
                            int OtherOrder,
                            int OtherLen)


Description:

Constructs a ruled trivariate between the two provided surfaces. OtherOrder and OtherLen (equal for Bezier) specifies the desired order and refinement level (if B-spline) of the other ruled direction.

Parameters:

CSrf1, CSrf2: he two surfaces to form a ruled trivariate in between.
OtherOrder: sually two, but one can specify higher orders in the ruled direction. OtherOrder must never be larger than OrderLen.
OtherLen: Usually two control points in the ruled direction which necessitates a linear interpolation.


Returned Value:

TrivTVStruct *: The ruled trivariate.


See Also:

CagdRuledSrf

Keywords:

ruled trivariate trivariate constructors


TrivSetFatalErrorFunc

(triv_ftl.c:28)

Prototype:

  TrivSetErrorFuncType TrivSetFatalErrorFunc(TrivSetErrorFuncType ErrorFunc)


Description:

Sets the error function to be used by Triv_lib.

Parameters:

ErrorFunc: New error function to use.


Returned Value:

TrivSetErrorFuncType: Old error function reference.


Keywords:

error handling


TrivSrfArea

(triv_aux.c:785)

Prototype:

  CagdRType TrivSrfArea(const CagdSrfStruct *Srf, CagdBType VolType)


Description:

Computes the surface area of the given surface by approximating it using a very thin shell and computing the volume...

Parameters:

Srf: To compute its surface area.
VolType: TRUE to integrate the surfaces with respect to the XY plane, FALSE to integrate the surfaces with respect to the origin,


Returned Value:

CagdRType: The computed area (can be negative if Srf reversed).


See Also:

TrivTVVolume

Keywords:

bbox bounding box


TrivSrfFromMesh

(triveval.c:1154)

Prototype:

  CagdSrfStruct *TrivSrfFromMesh(const TrivTVStruct *TV,
                                 int Index,
                                 TrivTVDirType Dir)


Description:

Extract a bivariate surface out of the given trivariate's mesh. The provided (zero based) Index specifies which Index to extract.

Parameters:

TV: Trivariate to extract a bivariate surface out of its mesh.
Index: Index of row/column/level of TV's mesh in direction Dir.
Dir: Direction of iso-surface extraction. Either U or V or W.


Returned Value:

CagdSrfStruct *: A bivariate surface which was extracted from TV's Mesh. This surface is not necessarily on TV.


Keywords:

trivariates


TrivSrfFromTV

(triveval.c:498)

Prototype:

  CagdSrfStruct *TrivSrfFromTV(const TrivTVStruct *TV,
                               CagdRType t,
                               TrivTVDirType Dir,
                               int OrientBoundary)


Description:

Extract an isoparametric surface out of the given tensor product trivariate. Operations should favor the CONST_W_DIR, in which the extraction is somewhat faster, if it is possible. surfaces that are on the boundary are reoriented so their normals are pointing into the trivariate, if OrientBoundary is TRUE.

Parameters:

TV: To extract an parametrize surface from at parameter value t in direction Dir.
t: Parameter value at which to extract the isosurface.
Dir: Direction of isosurface extraction. Either U or V or W.
OrientBoundary: Controls the orientations of extracted surfaces as, 0 - do no aim to examine/change the surfaces orientations. 1 - to reorient boundary surfaces to point with their normals into the trivariate. 2 - same as 1, but only tags the extract surface as "reversed" attribute, without reversing the surface.


Returned Value:

CagdSrfStruct *: A bivariate surface which is an isosurface of TV.


See Also:

TrivBndrySrfsFromTV

Keywords:

trivariates


TrivSrfToMesh

(triveval.c:1286)

Prototype:

  void TrivSrfToMesh(const CagdSrfStruct *Srf,
                     int Index,
                     TrivTVDirType Dir,
                     TrivTVStruct *TV)


Description:

Substitute a bivariate surface into a given trivariate's mesh. The provided (zero based) Index specifies which Index to extract.

Parameters:

Srf: Surface to substitute into the trivariate TV.
Index: Index of row/column/level of TV's mesh in direction Dir.
Dir: Direction of isosurface extraction. Either U or V or W.
TV: Trivariate to substitute a bivariate surface into its mesh.


Returned Value:

void


Keywords:

trivariates


TrivSweepTV

(trivswep.c:99)

Prototype:

  TrivTVStruct *TrivSweepTV(const CagdSrfStruct *CrossSection,
                            const CagdCrvStruct *Axis,
                            const CagdCrvStruct *ScalingCrv,
                            CagdRType Scale,
                            const VoidPtr Frame,
                            int FrameOption)


Description:

Constructs a sweep trivariate using the following surface/curves: 1. CrossSection - defines the basic cross section of the sweep. Must be in the XY plane. Can be several surfaces to be blended along the Axis. 2. Axis - a 3D curve the CrossSection will be swept along such that the Axis normal aligns with the Y axis of the cross section. If Axis is linear (i.e. no normal), the normal is picked randomly or to fit the non linear part of the Axis (if any). 3. Scale - a scaling curve for the sweep, If NULL a scale of Scale is used. 4. Frame - a curve or a vector that specifies the orientation of the sweep by specifying the axes curve's binormal. If Frame is a vector, it is a constant binormal. If Frame is a curve (FrameOption == 2), it is assumed to be a vector field binormal. If NULL, it is computed from the Axis curve's pseudo Frenet frame, that minimizes rotation. This operation is only an approximation. See CagdSweepAxisRefine for a tool to refine the Axis curve and improve accuracy.

Parameters:

CrossSection: Of the constructed sweep trivar. If more than one curve is given as a linked list of curves, the cross sections are modified as we progresses along the sweep, blending between the cross sections so that last cross section is used in the last parameter value of the Axis.
Axis: Of the constructed sweep trivariate.
ScalingCrv: Optional scale or profile curve. NULL if none. The Y axis of this curve is using as scaling as the function of the parametrization. X axis can be used to define a 2D parametric curve so this curve can be displayed but X is ignored by this function.
Scale: If no Scaling Crv, Scale is used to apply a fixed scale on the CrossSection curve.
Frame: An optional vector or a curve to specify the binormal orientation. Otherwise, Frame must be NULL.
FrameOption: If 2 Frame is a curve, if 0 or 1 a vector (if Frame is not NULL). If 0, the vector is used just to init the first frame.


Returned Value:

TrivTVStruct *: Constructed sweep trivariate.


See Also:

CagdSweepSrf CagdSweepSrfError VMdlSweepTrimSrf TrivSweepTVC1

Keywords:

sweep trivariate constructors


TrivSweepTVC1

(trivswep.c:519)

Prototype:

  TrivTVStruct *TrivSweepTVC1(const CagdSrfStruct *CrossSection,
                              const CagdCrvStruct *Axis,
                              const CagdCrvStruct *ScalingCrv,
                              CagdRType Scale,
                              const VoidPtr Frame,
                              int FrameOption,
                              CagdCrvCornerType CornerType,
                              CagdRType C1DiscontCropTol)


Description:

Constructs a sweep trivariate using the following geometries: 1. CrossSection - defines the basic cross section of the sweep. Must be in the XY plane. Can be several surfaces to be blended along the Axis. 2. Axis - a 3D curve the CrossSection will be swept along such that the Axis normal aligns with the Y axis of the cross section. If Axis is linear (i.e. no normal), the normal is picked randomly or to fit the non linear part of the Axis (if any). Can be C^1 discontinuous. 3. Scale - a scaling curve for the sweep, If NULL a scale of Scale is used. 4. Frame - a curve or a vector that specifies the orientation of the sweep by specifying the axes curve's binormal. If Frame is a vector, it is a constant binormal. If Frame is a curve (FrameOption == 2), it is assumed to be a vector field binormal. If NULL, it is computed from the Axis curve's pseudo Frenet frame, that minimizes rotation. This operation is only an approximation. See CagdSweepAxisRefine for a tool to refine the Axis curve and improve accuracy.

Parameters:

CrossSection: Of the constructed sweep surface. If more than one srf is given as a linked list of surfaces, the cross sections are modified as we progresses along the sweep, blending between the cross sections so that last cross section is used in the last parameter value of the Axis.
Axis: Of the constructed sweep surface. Can be C1 discont.
ScalingCrv: Optional scale or profile curve. NULL if none. The Y axis of this curve is using as scaling as the function of the parametrization. X axis can be used to define a 2D parametric curve so this curve can be displayed but X is ignored by this function.
Scale: If no Scaling Crv, Scale is used to apply a fixed scale on the CrossSection curve.
Frame: An optional vector or a curve to specified the binormal orientation. Otherwise Frame must be NULL.
FrameOption: If 2 Frame is a curve, if 0 or 1 a vector (if Frame is not NULL). If 0, the vector is used just to init the first frame.
CornerType: C^1 discont. joint corner type - 1. For splitting and computing sweeps of individual C^1 cont. axes. 2. For rounded joints (circular if input is rational). 3. For chamfered joints. 4. For mitered joints.
C1DiscontCropTol: dditional epsilon to crop surfaces at intersection.


Returned Value:

TrivTVStruct *: Constructed sweep trivariate.


See Also:

CagdSweepSrfError CagdSweepAxisRefine CagdSweepSrf CagdSweepSrfC1 TrivSweepTV

Keywords:

sweep trivar constructors


TrivSweepTVError

(trivswep.c:1032)

Prototype:

  CagdSrfStruct *TrivSweepTVError(const TrivTVStruct *SweepTV,
                                  const CagdSrfStruct *CrossSection,
                                  const CagdCrvStruct *Axis,
                                  const CagdCrvStruct *ScalingCrv,
                                  CagdRType Scale)


Description:

Computes an upper bound on the error as a scalar function over the sweep trivariate approximation, SweepTV, as a bivariate field over the domain of the boundary of SweepTV, given the sweep surface construction parameters. This operation is only an approximation. See CagdSweepAxisRefine for a tool to refine the Axis curve and improve accuracy. Error is computed as:
     SweepErr(u, v) = || CrossSection(u) * Scale(v) || ^ 2  -
                      || SweepTVBndry(u, v) - Axis(v) || ^ 2

where scale(v) is constant Scale if no scaling
Parameters:

SweepTV: Computed approximated sweep trivariate, given the params.
CrossSection: Of the constructed sweep trivar. If more than one curve is given as a linked list of srfs, the cross sections are modified as we progresses along the sweep, blending between the cross sections so that last cross section is used in the last parameter value of the Axis.
Axis: Of the constructed sweep surface.
ScalingCrv: Optional scale or profile curve. NULL if none. The Y axis of this curve is using as scaling as the function of the parametrization. X axis can be used to define a 2D parametric curve so this curve can be displayed but X is ignored by this function.
Scale: If no Scaling Crv, Scale is used to apply a fixed scale on the CrossSection curve.


Returned Value:

CagdSrfStruct *: A scalar field represented the error as L2 distance square from the (boundary of the) precise sweep trivariate.


See Also:

TrivSweepTV CagdSweepAxisRefine CagdSweepSrfError

Keywords:

sweep trivariate constructors approximation error


TrivSwungAlgSumTV

(trivcnst.c:108)

Prototype:

  TrivTVStruct *TrivSwungAlgSumTV(const CagdCrvStruct *Crv,
                                  const CagdSrfStruct *Srf)


Description:

Adds up algebraically the given curve and surface , C1(r) and S2(s, t), as swung trivariate (The NURBs book', by Piegl and Tiller, pp 455): T(r, s, t) = (x1(r) x2(s, t), y1(r) x2(s, t), y2(s, t))

Parameters:

Crv, Srf: curve and a surface to swung algebraically into a trivariate.


Returned Value:

TrivTVStruct *: A trivariate represent their swung algebraic sum.


See Also:

TrivAlgebraicProdTV TrivAlgebraicSumTV SymbSwungAlgSumSrf SymbAlgebraicProdSrf SymbAlgebraicSumSrf

Keywords:




TrivTV2CtrlMesh

(trivmesh.c:24)

Prototype:

  CagdPolylineStruct *TrivTV2CtrlMesh(const TrivTVStruct *Trivar)


Description:

Extracts the control mesh of a surface as a list of polylines in E3.

Parameters:

Trivar: To extract a control mesh from.


Returned Value:

CagdPolylineStruct *: The control mesh of Srf.


Keywords:

control mesh


TrivTVAdd

(symb_tv.c:33)

Prototype:

  TrivTVStruct *TrivTVAdd(const TrivTVStruct *TV1, const TrivTVStruct *TV2)


Description:

Given two trivars - add them coordinate-wise. The two trivars are promoted to same point type before the multiplication can take place. Furthermore, order and continuity are matched as well.

Parameters:

TV1, TV2: Two trivar to add up coordinate-wise.


Returned Value:

TrivTVStruct *: The summation of TV1 + TV2 coordinate-wise.


See Also:

MvarMVAdd TrivTVSub TrivTVMult

Keywords:

addition symbolic computation


TrivTVBBox

(triv_aux.c:398)

Prototype:

  CagdBBoxStruct *TrivTVBBox(const TrivTVStruct *TV, CagdBBoxStruct *BBox)


Description:

Computes a bounding box for a trivariate freeform function.

Parameters:

TV: To compute a bounding box for.
BBox: Where bounding information is to be saved.


Returned Value:

CagdBBoxStruct *: BBox.


Keywords:

bbox bounding box


TrivTVBlockEvalDone

(triveval.c:1866)

Prototype:

  void TrivTVBlockEvalDone(TrivTVBlockEvalGenInfoStruct *TVBlock)


Description:

Free all auxiliary memory used by this block evaluation procedure.

Parameters:

TVBlock: Pointer to struct that contains all parameters for block evaluation.


Returned Value:

void


See Also:

TrivTVBlockEvalInit TrivTVBlockEvalSetMesh TrivTVBlockEvalOnce

Keywords:




TrivTVBlockEvalInit

(triveval.c:1597)

Prototype:

  TrivTVBlockEvalGenInfoStruct *TrivTVBlockEvalInit(CagdRType *UKnotVector,
                                                    CagdRType *VKnotVector,
                                                    CagdRType *WKnotVector,
                                                    int Lengths[3],
                                                    int Orders[3],
                                                    int BlockSizes[3],
                                                    CagdPType *Params,
                                                    int NumOfParams[3])


Description:

Initialize the computation of evaluations of blocks of parameter values for the given trivariate space, as prescribed by U/V/WKnotVectors and Orders, Lengths, and BlockSizes, at the requested NumOfParams parameter values, Params. All parameters below should stay valid for the duration of the block evaluation.

Parameters:

UKnotVector: U Knot sequence defining the spline space in U.
VKnotVector: V Knot sequence defining the spline space in V.
WKnotVector: W Knot sequence defining the spline space in W.
Lengths: Lengths of Mesh in the U,V,W directions.
Orders: Of the spline space in the U,V,W Directions.
BlockSizes: Of the evaluation block sizes in U,V,W Directions.
Params: At which to evaluate and compute the volume functions. This vector is of size IRIT_MAX(NumOfparams[0],[1],[2]).
NumOfParams: Size of Params vector, in U, V, W.


Returned Value:

TrivTVBlockEvalGenInfoStruct *: Pointer to struct that contains all parameters for block evaluation.


See Also:

TrivTVBlockEvalSetMesh TrivTVBlockEvalOnce TrivTVBlockEvalDone

Keywords:




TrivTVBlockEvalOnce

(triveval.c:1706)

Prototype:

  TrivTVBlockEvalStruct *TrivTVBlockEvalOnce(
                                          TrivTVBlockEvalGenInfoStruct *TVBlock,
                                          int i,
                                          int j,
                                          int k)


Description:

Computes evaluations of one block of parameter values for the given trivariate space, as prescribed by i, j, k.

Parameters:

TVBlock: Pointer to struct that contains all parameters for block evaluation.
i, j, k: Index of current block evaluation. This triple index is between 0 and NumOfParams[l]/BlockSize[l], in each dimension.


Returned Value:

TrivTVBlockEvalStruct *: Evaluated block.


See Also:

TrivTVBlockEvalInit TrivTVBlockEvalSetMesh TrivTVBlockEvalDone

Keywords:




TrivTVBlockEvalSetMesh

(triveval.c:1677)

Prototype:

  void TrivTVBlockEvalSetMesh(TrivTVBlockEvalGenInfoStruct *TVBlock,
                              CagdPType *Mesh)


Description:

Sets the current mesh of size Lengths[1] * Lengths[2] * Lengths[3] (see TrivTVBlockEvalInit) to use in the block evaluation.

Parameters:

TVBlock: Pointer to struct that contains all parameters for block evaluation.
Mesh: Provide the current mesh.


Returned Value:

void


See Also:

TrivTVBlockEvalInit TrivTVBlockEvalOnce TrivTVBlockEvalDone

Keywords:




TrivTVBlossomDegreeRaise

(trivrais.c:607)

Prototype:

  TrivTVStruct *TrivTVBlossomDegreeRaise(const TrivTVStruct *TV,
                                         TrivTVDirType Dir)


Description:

Returns a new Bspline trivariate, identical to the original but with one degree higher, in the requested direction Dir.

Parameters:

TV: To raise it degree by one.
Dir: Direction of degree raising. Either U, V or W.


Returned Value:

TrivTVStruct *: A trivariate with one degree higher in direction Dir, representing the same geometry as TV.


See Also:

TrivBspTVDegreeRaise TrivBzrTVDegreeRaise TrivTVDegreeRaise

Keywords:




TrivTVBlossomDegreeRaiseN

(trivrais.c:406)

Prototype:

  TrivTVStruct *TrivTVBlossomDegreeRaiseN(const TrivTVStruct *TV,
                                          int NewUOrder,
                                          int NewVOrder,
                                          int NewWOrder)


Description:

Returns a new Bspline trivariate, identical to the original but with one degree higher, in the requested direction Dir.

Parameters:

TV: To raise it degree by one.
NewUOrder: New degree raised order in U.
NewVOrder: New degree raised order in V.
NewWOrder: New degree raised order in W.


Returned Value:

TrivTVStruct *: A trivariate with one degree higher in direction Dir, representing the same geometry as TV.


See Also:

TrivBspTVDegreeRaise TrivBzrTVDegreeRaise TrivTVDegreeRaise

Keywords:




TrivTVCopy

(triv_gen.c:292)

Prototype:

  TrivTVStruct *TrivTVCopy(const TrivTVStruct *TV)


Description:

Allocates and duplicates all slots of a trivariate structure.

Parameters:

TV: Trivariate to duplicate


Returned Value:

TrivTVStruct *: Duplicated trivariate.


Keywords:

trivariates


TrivTVCopyList

(triv_gen.c:357)

Prototype:

  TrivTVStruct *TrivTVCopyList(const TrivTVStruct *TVList)


Description:

Duplicates a list of trivariate structures.

Parameters:

TVList: List of trivariates to duplicate.


Returned Value:

TrivTVStruct *: Duplicated list of trivariates.


Keywords:

trivariates


TrivTVCrossProd

(symb_tv.c:280)

Prototype:

  TrivTVStruct *TrivTVCrossProd(const TrivTVStruct *TV1, const TrivTVStruct *TV2)


Description:

Given two trivars - computes their cross product in R3. Returned trivar is a trivar representing the cross product of the two given trivars.

Parameters:

TV1, TV2: wo trivar to multiply in R3 and compute cross product for.


Returned Value:

TrivTVStruct *: A vector trivar representing the cross product of TV1 x TV2.


See Also:

MvarMVCrossProd TrivTVDotProd TrivTVVecDotProd TrivTVMultScalar TrivTVInvert TrivTVVecCrossProd

Keywords:

product cross product symbolic computation


TrivTVDegreeRaise

(trivrais.c:38)

Prototype:

  TrivTVStruct *TrivTVDegreeRaise(const TrivTVStruct *TV, TrivTVDirType Dir)


Description:

Returns a new trivariate representing the same curve as TV but with its degree raised by one, in Dir direction.

Parameters:

TV: To raise its degree.
Dir: Direction of degree raising. Either U, V or W.


Returned Value:

TrivTVStruct *: A trivariate with same geometry as TV but with one degree higher.


Keywords:

degree raising


TrivTVDegreeRaiseN

(trivrais.c:78)

Prototype:

  TrivTVStruct *TrivTVDegreeRaiseN(const TrivTVStruct *TV,
                                   TrivTVDirType Dir,
                                   int NewOrder)


Description:

Returns a new trivariate representing the same curve as TV but with its degree raised to a NewOrder in Dir direction.

Parameters:

TV: To raise its degree.
Dir: Direction of degree raising. Either U, V or W.
NewOrder: ew order to raise TV in direction Dir.


Returned Value:

TrivTVStruct *: A trivariate with same geometry as TV but with one degree higher.


Keywords:

degree raising


TrivTVDerive

(triv_der.c:37)

Prototype:

  TrivTVStruct *TrivTVDerive(const TrivTVStruct *TV, TrivTVDirType Dir)


Description:

Given a trivariate, computes its partial derivative trivariate in direction Dir.

Parameters:

TV: Trivariate to differentiate.
Dir: Direction of differentiation. Either U or V or W.


Returned Value:

TrivTVStruct *: Differentiated trivariate in direction Dir.


See Also:

TrivBzrTVDerive TrivBspTVDerive TrivTVDeriveScalar

Keywords:

trivariates


TrivTVDeriveScalar

(triv_der.c:68)

Prototype:

  TrivTVStruct *TrivTVDeriveScalar(const TrivTVStruct *TV, TrivTVDirType Dir)


Description:

Given a trivariate, computes its partial derivative trivariate in direction Dir.

Parameters:

TV: Trivariate to differentiate.
Dir: Direction of differentiation. Either U or V or W.


Returned Value:

TrivTVStruct *: Differentiated trivariate in direction Dir.


See Also:

TrivBzrTVDeriveScalar TrivBspTVDeriveScalar TrivTVDerive

Keywords:

trivariates


TrivTVDomain

(triv_aux.c:42)

Prototype:

  void TrivTVDomain(const TrivTVStruct *TV,
                    CagdRType *UMin,
                    CagdRType *UMax,
                    CagdRType *VMin,
                    CagdRType *VMax,
                    CagdRType *WMin,
                    CagdRType *WMax)


Description:

Given a tri-variate, returns its parametric domain.

Parameters:

TV: Trivariate function to consider.
UMin, UMax: U Domain of TV will be placed herein.
VMin, VMax: V Domain of TV will be placed herein.
WMin, WMax: W Domain of TV will be placed herein.


Returned Value:

void


See Also:

TrivTVSetDomain TrivTVSetDomain2

Keywords:

trivariates


TrivTVDotProd

(symb_tv.c:210)

Prototype:

  TrivTVStruct *TrivTVDotProd(const TrivTVStruct *TV1, const TrivTVStruct *TV2)


Description:

Given two trivars - computes their dot product. Returned trivar is a scalar trivar representing the dot product of the two given trivars.

Parameters:

TV1, TV2: Two trivar to multiply and compute a dot product for.


Returned Value:

TrivTVStruct *: A scalar trivar representing the dot product of TV1 . TV2.


See Also:

MvarMVDotProd TrivTVMult TrivTVVecDotProd TrivTVMultScalar TrivTVInvert TrivTVCrossProd TrivTVVecCrossProd

Keywords:

product dot product symbolic computation


TrivTVEval2Malloc

(triveval.c:447)

Prototype:

  CagdRType *TrivTVEval2Malloc(const TrivTVStruct *TV,
                               CagdRType u,
                               CagdRType v,
                               CagdRType w)


Description:

This function is the same as TrivTVEval2Todata above, while the evaluated point is allocated in dynamic memory. Evaluates the given tensor product trivariate at a given point, by extracting an isoparametric surface along u and evaluating (v, w) in it.

Parameters:

TV: To evaluate at given (u, v, w) parametric location.
u, v, w: Parametric location to evaluate TV at.


Returned Value:

CagdRType *: A vector holding all the coefficients of all components of the trivariate's point type. If for example trivariate point type is P2, the W, X, and Y will be saved in the first three locations of the returned vector. The first location (index 0) of the returned vector is reserved for the rational coefficient W and XYZ always starts at second location of the returned vector (index 1). Returned value is allocated dynamically.


See Also:

TrivTVEvalToData TrivTVEval2ToData

Keywords:

evaluation trivariates


TrivTVEval2ToData

(triveval.c:402)

Prototype:

  void TrivTVEval2ToData(const TrivTVStruct *TV,
                         CagdRType u,
                         CagdRType v,
                         CagdRType w,
                         CagdRType *Pt)


Description:

This function is the same as TrivTVEvalToData above. Evaluates the given tensor product trivariate at a given point, by extracting an isoparamteric surface along u and evaluating (v, w) in it.

Parameters:

TV: To evaluate at given (u, v, w) parametric location.
u, v, w: Parametric location to evaluate TV at.
Pt: A vector holding all the coefficients of all components of the trivariate's point type. If for example trivariate point type is P2, the W, X, and Y will be saved in the first three locations of the returned vector. The first location (index 0) of the returned vector is reserved for the rational coefficient W and XYZ always starts at second location of the returned vector (index 1).


Returned Value:

void


See Also:

TrivTVEvalToData TrivTVEval2Malloc

Keywords:

evaluation trivariates


TrivTVEvalJacobian

(triv_der.c:412)

Prototype:

  CagdRType TrivTVEvalJacobian(const TrivTVStruct *TV,
                               CagdRType u,
                               CagdRType v,
                               CagdRType w)


Description:

Evaluates the Jacobian of the given trivariates at the specified parametric location.

Parameters:

TV: Trivariate to compute its Jacobian.
u, v, w: The location to evaluate the Jacobian at.


Returned Value:

CagdRType: Evaluated Jacobian of TV at (u, v, w).


See Also:

MvarTVRglrIsNegJacobian MvarCalculateTVJacobian TrivComputeJacobian

Keywords:




TrivTVEvalMalloc

(triveval.c:362)

Prototype:

  CagdRType *TrivTVEvalMalloc(const TrivTVStruct *TV,
                              CagdRType u,
                              CagdRType v,
                              CagdRType w)


Description:

Evaluates the given tensor product trivariate at a given point, by extracting an isoparamteric surface along w and evaluating (u,v) in it. Evaluated point is returned in allocated dyanmic memory.

          +-----------------------+
      W  /                       /|
     /  /                       / |
    /  /      U -->            /  |  Orientation of
      +-----------------------+   |  control tri-variate mesh.
  V | |P0                 Pi-1|   +
    v |Pi                P2i-1|  /
      |                       | /
      |Pn-i               Pn-1|/
      +-----------------------+


Parameters:

TV: To evaluate at given (u, v, w) parametric location.
u, v, w: Parametric location to evaluate TV at.


Returned Value:

CagdRType *: A vector holding all the coefficients of all components of the trivariate's point type. If for example trivariate point type is P2, the W, X, and Y will be saved in the first three locations of the returned vector. The first location (index 0) of the returned vector is reserved for the rational coefficient W and XYZ always starts at second location of the returned vector (index 1). Returned value is allocated dynamically.


See Also:

TrivTVEvalToData

Keywords:

evaluation trivariates


TrivTVEvalToData

(triveval.c:86)

Prototype:

  void TrivTVEvalToData(const TrivTVStruct *TV,
                        CagdRType u,
                        CagdRType v,
                        CagdRType w,
                        CagdRType *Pt)


Description:


Evaluates the given tensor product trivariate at a given point, by computing the basis functions in U/V/W and blending them with the 3D matrix of relevant control points.

          +-----------------------+
      W  /                       /|
     /  /                       / |
    /  /      U -->            /  |  Orientation of
      +-----------------------+   |  control tri-variate mesh.
  V | |P0                 Pi-1|   +
    v |Pi                P2i-1|  /
      |                       | /
      |Pn-i               Pn-1|/
      +-----------------------+


Parameters:

TV: To evaluate at given (u, v, w) parametric location.
u, v, w: Parametric location to evaluate TV at.
Pt: A vector holding all the coefficients of all components of the trivariate's point type. If for example trivariate point type is P2, the W, X, and Y will be saved in the first three locations of the returned vector. The first location (index 0) of the returned vector is reserved for the rational coefficient W and XYZ always starts at second location of the returned vector (index 1).


Returned Value:

void


See Also:

TrivTVEvalMalloc

Keywords:

evaluation trivariates


TrivTVEvalToDataOld

(triveval.c:233)

Prototype:

  void TrivTVEvalToDataOld(const TrivTVStruct *TV,
                           CagdRType u,
                           CagdRType v,
                           CagdRType w,
                           CagdRType *Pt)


Description:


Evaluates the given tensor product trivariate at a given point, by extracting an isoparamteric surface along w and evaluating (u,v) in it. evaluated point is saved in Pt.

          +-----------------------+
      W  /                       /|
     /  /                       / |
    /  /      U -->            /  |  Orientation of
      +-----------------------+   |  control tri-variate mesh.
  V | |P0                 Pi-1|   +
    v |Pi                P2i-1|  /
      |                       | /
      |Pn-i               Pn-1|/
      +-----------------------+


Parameters:

TV: To evaluate at given (u, v, w) parametric location.
u, v, w: Parametric location to evaluate TV at.
Pt: A vector holding all the coefficients of all components of the trivariate's point type. If for example trivariate point type is P2, the W, X, and Y will be saved in the first three locations of the returned vector. The first location (index 0) of the returned vector is reserved for the rational coefficient W and XYZ always starts at second location of the returned vector (index 1).


Returned Value:

void


See Also:

TrivTVEvalMalloc

Keywords:

evaluation trivariates


TrivTVFillet

(triv_fillet.c:4207)

Prototype:

  TrivTVStruct *TrivTVFillet(const CagdSrfStruct *Srf1List,
                             const CagdSrfStruct *Srf2List,
                             CagdRType RailDist,
                             int R1Orient,
                             int R2Orient,
                             CagdRType TanScale,
                             int ApproxCrvsCtlPts,
                             CagdRType Tol,
                             CagdRType NumerTol,
                             TrivFilletingMethodType FilletingMethod,
                             CagdBType PreciseFillet,
                             CagdSrfStruct **PrimSrfs1,
                             CagdSrfStruct **PrimSrfs2)


Description:


Constructs a (list of) fillet trivariate(s) between the two given surfaces. The fillet meets with the surfaces with G1 continuity, and its boundary curves are the intersection curve of Srf1 and Srf2, and two rail curves that are computed as an approximate Euclidean offest of the intersection curve on each of the surfaces.

Parameters:

Srf1List, Srf2List: Two list of surfaces to construct a fillet in between each pair of them. *
RailDist: The distance of the rail curves from the intersection curve of Srf1 and Srf2
R1Orient, R2Orient: +/-1 for left/right orientation of the corresponding rail curve. 0 to choose the option that results with a longer rail curve.
TanScale: The desired magnitude of the fillet's tangents that connect it with Srf1 and Srf2.
ApproxCrvsCtlPts: The number of control points used to approximate the curves used for fillet construction.
Tol: The tolerance used in the filleting algorithm comparisons.
NumerTol: The numeric tolerance used when using the multivariate solver.
FilletingMethod: The required filleting method.
PreciseFillet: If true, the primary surfaces of the fillet are computed precisely, using surface-surface composition. Otherwise, the primary surafces are approximated, using least square fitting.
PrimSrfs1: If not NULL, a list of the fillets' boundaries on Srf1List will be stored here.
PrimSrfs2: If not NULL, a list of the fillets' boundaries on Srf2List will be stored here.


Returned Value:

TrivTVStruct *: The (list of) fillet trivariate(s).


See Also:

TrivBlendFilletProperties

Keywords:

trivariates blending filleting


TrivTVFree

(triv_gen.c:386)

Prototype:

  void TrivTVFree(TrivTVStruct *TV)


Description:

Deallocates and frees all slots of a trivariate structure.

Parameters:

TV: Trivariate to free.


Returned Value:

void


Keywords:

trivariates


TrivTVFreeList

(triv_gen.c:422)

Prototype:

  void TrivTVFreeList(TrivTVStruct *TVList)


Description:

Deallocates and frees a list of trivariate structures.

Parameters:

TVList: Trivariate list to free.


Returned Value:

void


Keywords:

trivariates


TrivTVFromSrfs

(trivstrv.c:142)

Prototype:

  TrivTVStruct *TrivTVFromSrfs(const CagdSrfStruct *SrfList,
                               int OtherOrder,
                               CagdEndConditionType OtherEC,
                               IrtRType *OtherParamVals)


Description:

Constructs a trivariate using a set of surfaces. Surfaces are made to be compatible and then each is substituted into the new trivariate's mesh as a row. If OtherOrder is less than the number of surfaces, number of surfaces is used. A knot vector is formed with uniform open end for the other direction, so created TV interpolates the first and last surfaces only, if OtherOrder is greater than 2.

Parameters:

SrfList: List of surfaces to construct a trivariate with.
OtherOrder: Other, third, order of trivariate.
OtherEC: End condition in the other, third, trivar direction.
OtherParamVals: f not NULL, updated with other direction set parameters of the surfaces in the new trivar.


Returned Value:

TrivTVStruct *: Constructed trivariate from surfaces.


See Also:

TrivTVInterpolateSrfs

Keywords:

trivar constructors


TrivTVGenAdjacencyInfo

(triv_adj.c:129)

Prototype:

  void TrivTVGenAdjacencyInfo(TrivTVStruct *TVList,
                              TrivTVAdjSrfCmpFuncType SrfCmpFuncPtr,
                              CagdRType SrfGapTol,
                              CagdBType MarkUVWBndry)


Description:

Given a list of trivariates, find all the adjacent trivariates of each trivariate. Each trivariate can have up to six neighbor trivariates, each of which is adjacent to UMin/UMax/VMin/VMax/WMin/WMax boundary surface of the given trivariate. A unique id is given to each trivariate and then the ids of the adjacent trivariate are saved in the 'TrivAdjID[UMin|UMax|VMin|VMax| WMin|WMax]' attribute in the given trivariate as follows: 'TrivAdjID[UMin|UMax|VMin|VMax|WMin|WMax] i, mod', where i denotes the id of the neighboring trivariate in the specified direction and mod represents the modification flag returning from the user-specified surface comparison function. The id of each trivariate is also saved in the attribute 'TrivID'. When MarkUVWBndry is true, we mark whether UMin|UMax|VMin|VMax|WMin|WMax surface of each trivariate is a boundary surface or not and saved in Bndry attribute of the trivariate. If the trivariate has 6 trivariates adjacent to it, mark the trivariate as TRIV_NO_BNDRY mask is saved.

Parameters:

TVList: A List of trivariates to tag the adjacency information.
SrfCmpFuncPtr: A pointer to the function to compare two surfaces. Can be NULL for a default comparison function.
SrfGapTol: A tolerance value for the gap between two surfaces.
MarkUVWBndry: If TRUE, we mark if six MIN/MAX surfaces of trivariates are the boundary surfaces or not and save them in Bndry attribute. If all of the boundary surfaces are internal (adjacent to other surfaces), mark them as TRIV_NO_BNDRY


Returned Value:

void


See Also:

TrivTVAdjSrfCmpFuncType CagdSrfSame2 CagdSrfSame3 CagdSrfSame4 TrivTVGenAdjacencyInfo2

Keywords:




TrivTVGenAdjacencyInfo2

(triv_adj.c:190)

Prototype:

  void TrivTVGenAdjacencyInfo2(TrivTVStruct **TVVec,
                               int NumTVs,
                               TrivTVAdjSrfCmpFuncType SrfCmpFuncPtr,
                               CagdRType SrfGapTol,
                               CagdBType MarkUVWBndry)


Description:

Given a vector of trivariates, find all the adjacent trivariates of each trivariate. Each trivariate can have up to six neighbor trivariates, each of which is adjacent to UMin/UMax/VMin/VMax/WMin/WMax boundary surface of the given trivariate. A unique id is given to each trivariate and then the ids of the adjacent trivariate are saved in the 'TrivAdjID[UMin|UMax|VMin|VMax| WMin|WMax]' attribute in the given trivariate as follows: 'TrivAdjID[UMin|UMax|VMin|VMax|WMin|WMax] i, mod', where i denotes the id of the neighboring trivariate in the specified direction and mod represents the modification flag returning from the user-specified surface comparison function. The id of each trivariate is also saved in the attribute 'TrivID'. When MarkUVWBndry is true, we mark whether UMin|UMax|VMin|VMax|WMin|WMax surface of each trivariate is a boundary surface or not and saved in Bndry attribute of the trivariate. If the trivariate has 6 trivariates adjacent to it, mark the trivariate as TRIV_NO_BNDRY mask is saved.

Parameters:

TVVec: A vector of the trivariates' info.
NumTVs: Size of TVVec.
SrfCmpFuncPtr: A pointer to the function to compare two surfaces. Can be NULL for a default comparison function.
SrfGapTol: A tolerance value for the gap between two surfaces.
MarkUVWBndry: If TRUE, we mark if six MIN/MAX surfaces of trivariates are the boundary surfaces or not and save them in Bndry attribute. If all of the boundary surfaces are internal (adjacent to other surfaces), mark them as TRIV_NO_BNDRY


Returned Value:

void


See Also:

TrivTVAdjSrfCmpFuncType CagdSrfSame2 CagdSrfSame3 CagdSrfSame4 TrivTVGenAdjacencyInfo

Keywords:




TrivTVInterpPts

(trinterp.c:77)

Prototype:

  TrivTVStruct *TrivTVInterpPts(const TrivTVStruct *PtGrid,
                                int UOrder,
                                int VOrder,
                                int WOrder,
                                int TVUSize,
                                int TVVSize,
                                int TVWSize)


Description:

Given a set of points, PtList, computes a Bspline trivariate of order UOrder by VOrder by WOrder that interpolates or least square approximates the given set of points. PtGrid is a trivariate whose point data is employed toward the fitting. PtGrid also prescribes the parametric domain of the result. lists. The size of the control mesh of the resulting Bspline trivariate Trivar defaults to the number of points in PtGrid (if TV?Size = 0). However, either numbers can smaller to yield a least square approximation of the gievn data set.

Parameters:

PtGrid: Input data grid as a trivariate.
UOrder: Of the to be created trivariate.
VOrder: Of the to be created trivariate.
WOrder: Of the to be created trivariate.
TVUSize: U size of the to be created trivariate. Must be at least as large as the array PtGrid.
TVVSize: V size of the to be created trivariate. Must be at least as large as the array PtGrid.
TVWSize: W size of the to be created trivariate. Must be at least as large as the array PtList.


Returned Value:

TrivTVStruct *: Constructed interpolating/approximating trivariate.


See Also:

TrivInterpTrivar TrivTVInterpolate

Keywords:

interpolation least square approximation


TrivTVInterpScatPts

(trinterp.c:302)

Prototype:

  TrivTVStruct *TrivTVInterpScatPts(const CagdCtlPtStruct *PtList,
                                    int USize,
                                    int VSize,
                                    int WSize,
                                    int UOrder,
                                    int VOrder,
                                    int WOrder,
                                    CagdRType *UKV,
                                    CagdRType *VKV,
                                    CagdRType *WKV)


Description:

Given a set of scattered points, PtList, computes a Bspline trivariate of order UOrder by VOrder by WOrder that interpolates or least squares approximates the given set of scattered points. PtList is a NULL terminated lists of CagdPtStruct structs, with each point holding (u, v, w, x [, y[, z]]). That is, E4 points create an E1 scalar trivariate and E6 points create an E3 trivariate,

Parameters:

PtList: A NULL terminating array of linked list of points.
USize: U size of the to be created trivariate.
VSize: V size of the to be created trivariate.
WSize: W size of the to be created trivariate.
UOrder: Of the to be created trivariate.
VOrder: Of the to be created trivariate.
WOrder: Of the to be created trivariate.
UKV: Expected knot vector in U direction, NULL for uniform open.
VKV: Expected knot vector in V direction, NULL for uniform open.
WKV: Expected knot vector in W direction, NULL for uniform open.


Returned Value:

TrivTVStruct *: Constructed interpolating/approximating trivariate.


See Also:

TrivInterpTrivar TrivTVInterpPts TrivTVInterpolate BspSrfInterpScatPts

Keywords:

interpolation least square approximation


TrivTVInterpolate

(trinterp.c:121)

Prototype:

  TrivTVStruct *TrivTVInterpolate(const TrivTVStruct *PtGrid,
                                  int ULength,
                                  int VLength,
                                  int WLength,
                                  int UOrder,
                                  int VOrder,
                                  int WOrder)


Description:

Given a set of points on a box grid, PtGrid, the expected lengths U/V/WLength and orders U/V/WOrder of the Bspline trivariate, computes the Bspline trivariate's coefficients that interpolates or least square approximates the given set of points, PtGrid.

Parameters:

PtGrid: Input data grid as a trivariate.
ULength: Requested length of control mesh of trivariate in U direction. If zero, length of PtGrid in U is used.
VLength: Requested length of control mesh of trivariate in V direction. If zero, length of PtGrid in V is used.
WLength: Requested length of control mesh of trivariate in W direction. If zero, length of PtGrid in W is used.
UOrder: Requested order of trivariate in U direction. If zero, order of PtGrid in U is used.
VOrder: Requested order of trivariate in V direction. If zero, order of PtGrid in V is used.
WOrder: Requested order of trivariate in W direction. If zero, order of PtGrid in W is used.


Returned Value:

TrivTVStruct *: Constructed interpolating/approximating trivariate.


See Also:

TrivInterpTrivar TrivTVInterpPts TrivTVInterpScatPts

Keywords:

interpolation least square approximation


TrivTVInterpolateSrfs

(trivstrv.c:280)

Prototype:

  TrivTVStruct *TrivTVInterpolateSrfs(const CagdSrfStruct *SrfList,
                                      int OtherOrder,
                                      CagdEndConditionType OtherEC,
                                      CagdParametrizationType OtherParam,
                                      IrtRType *OtherParamVals)


Description:

Constructs a trivariate using a set of surfaces. Surfaces are made to be compatible and then the trivariate is fitted to interpolate them. If OtherOrder is less than the number of surfaces, number of surfaces is used. A knot vector is formed with OtherEC end conditions for the other direction.

Parameters:

SrfList: List of surfaces to interpolate a trivariate through.
OtherOrder: Other, third, depth order of trivariate.
OtherEC: End condition in the other, third, trivar direction.
OtherParam: Currently only Chord length and uniform are supported.
OtherParamVals: f not NULL, updated with other direction set parameters of the surfaces in the new trivar.


Returned Value:

TrivTVStruct *: Constructed trivariate from surfaces.


See Also:

TrivTVFromSrfs

Keywords:

trivar constructors interpolation


TrivTVInterpolateSrfsChordLenParams

(trivstrv.c:206)

Prototype:

  CagdRType *TrivTVInterpolateSrfsChordLenParams(const CagdSrfStruct *SrfList)


Description:

Computes parameters to interpolate the given surfaces at, as a trivar. Estimate a middle point from each surface and set parameters based on chord length from each middle point to the next.

Parameters:

SrfList: List of surfaces to consturct a trivariate volume with.


Returned Value:

CagdRType *: Vectors of parameters normalized to [0, 1] of parameters, of size of number of surfaces, allocated dynamically.


See Also:

TrivTVFromSrfs CagdSrfInterpolateCrvs CagdSrfInterpolateCrvs CagdSrfInterpolateCrvsChordLenParams

Keywords:

surface constructors


TrivTVInvert

(symb_tv.c:139)

Prototype:

  TrivTVStruct *TrivTVInvert(const TrivTVStruct *TV)


Description:

Given a scalar trivar, returns a scalar trivar representing the reciprocal values, by making it rational (if was not one) and flipping the numerator and the denominator.

Parameters:

TV: A scalar trivar to compute a reciprocal value for.


Returned Value:

TrivTVStruct *: A rational scalar trivar that is equal to the reciprocal value of TV.


See Also:

MvarCnvrtMVToTV TrivTVDotProd TrivTVVecDotProd TrivTVMultScalar TrivTVMult TrivTVCrossProd

Keywords:

division symbolic computation reciprocal value


TrivTVIsMeshC0DiscontAt

(triv_gen.c:1348)

Prototype:

  CagdBType TrivTVIsMeshC0DiscontAt(const TrivTVStruct *TV,
                                    int Dir,
                                    CagdRType t)


Description:

Examines the mesh at given parametric location for a C0 discontinuity.

Parameters:

TV: Multivariate to examine for C0 discontinuity.
Dir: Parametric direction to examine at.
t: Parameter value to examine at.


Returned Value:

CagdBType: TRUE if TV has a C0 discontinuity at parameter t in direction Dir, FALSE otherwise.


See Also:

TrivTVMeshC0Continuous TrivTVKnotHasC0Discont

Keywords:




TrivTVIsMeshC1DiscontAt

(triv_gen.c:1568)

Prototype:

  CagdBType TrivTVIsMeshC1DiscontAt(const TrivTVStruct *TV,
                                    int Dir,
                                    CagdRType t)


Description:

Examines the mesh at given parametric location for a C1 discontinuity.

Parameters:

TV: Multivariate to examine for C1 discontinuity.
Dir: Parametric direction to examine at.
t: Parameter value to examine at.


Returned Value:

CagdBType: TRUE if TV has a C1 discontinuity at parameter t in direction Dir, FALSE otherwise.


See Also:

TrivTVMeshC1Continuous TrivTVKnotHasC1Discont

Keywords:




TrivTVKnotHasC0Discont

(triv_gen.c:1198)

Prototype:

  CagdBType TrivTVKnotHasC0Discont(const TrivTVStruct *TV,
                                   TrivTVDirType *Dir,
                                   CagdRType *t)


Description:

Scans the given knot vector of the given trivariate for a potential C0 discontinuity. Looks for multiplicities in the knot sequence and then examine the mesh if indeed the mesh is discontinuous at that location. Assumes knot vectors has open end condition.

Parameters:

TV: To examine its potential discontinuity across Dir.
Dir: Direction to examine the discontinuity across. If Dir is set to TRIV_NO_DIR, all directions are searched for C0 discontinuities, and Dir will be updated with the C0 discontinuous direction, if any. If Dir is set to one of TRIV_CONST_U/V/W_DIR, only that directions are searched for the C0 discontinuities.
t: Where to put the parameter value (knot) that can be C0 discontinuous.


Returned Value:

CagdBType: TRUE if found a C0 discontinuity, FALSE otherwise.


See Also:

TrivTVKnotHasC1Discont BspKnotC1Discont TrivTVMeshC1Continuous

Keywords:

knot vectors continuity discontinuity


TrivTVKnotHasC1Discont

(triv_gen.c:1407)

Prototype:

  CagdBType TrivTVKnotHasC1Discont(const TrivTVStruct *TV,
                                   TrivTVDirType *Dir,
                                   CagdRType *t)


Description:

Scans the given knot vector of the given trivariate for a potential C1 discontinuity. Looks for multiplicities in the knot sequence and then examine the mesh if indeed the mesh is discontinuous at that location. Assumes knot vectors has open end condition.

Parameters:

TV: To examine its potential discontinuity across Dir.
Dir: Direction to examine the discontinuity across.
t: Where to put the parameter value (knot) that can be C1 discontinuous.


Returned Value:

CagdBType: TRUE if found a C1 discontinuity, FALSE otherwise.


See Also:

TrivTVKnotHasC0Discont BspKnotC1Discont TrivTVMeshC1Continuous

Keywords:

knot vectors continuity discontinuity


TrivTVListBBox

(triv_aux.c:422)

Prototype:

  CagdBBoxStruct *TrivTVListBBox(const TrivTVStruct *TVs, CagdBBoxStruct *BBox)


Description:

Computes a bounding box for a list of trivariate freeform function.

Parameters:

TVs: To compute a bounding box for.
BBox: Where bounding information is to be saved.


Returned Value:

CagdBBoxStruct *: Bbox.


Keywords:

bbox bounding box


TrivTVListMatTransform

(triv_gen.c:660)

Prototype:

  TrivTVStruct *TrivTVListMatTransform(const TrivTVStruct *TVs, CagdMType Mat)


Description:

Transforms the given list of TVs as specified by homogeneous matrix Mat.

Parameters:

TVs: To be transformed.
Mat: Defining the transformation.


Returned Value:

TrivTVStruct *: Transformed TVs.


See Also:

TrivTVMatTransform TrivTVMatTransform2 CagdSrfListMatTransform

Keywords:

scaling rotation translation transformations


TrivTVMatTransform

(triv_gen.c:613)

Prototype:

  TrivTVStruct *TrivTVMatTransform(const TrivTVStruct *TV, CagdMType Mat)


Description:

Transforms the given TV as specified by homogeneous matrix Mat.

Parameters:

TV: Multi-variate to transform.
Mat: Homogeneous transformation to apply to TV.


Returned Value:

TrivTVStruct *: Transformed TV.


See Also:

TrivTVMatTransform2 TrivTVListMatTransform CagdSrfListMatTransform

Keywords:

multi-variates


TrivTVMatTransform2

(triv_gen.c:690)

Prototype:

  void TrivTVMatTransform2(TrivTVStruct *TV, CagdMType Mat)


Description:

Transforms, in place, the given TV as specified by homogeneous matrix Mat.

Parameters:

TV: Trivariate to transform.
Mat: Homogeneous transformation to apply to TV.


Returned Value:

void


See Also:

TrivTVMatTransform TrivTVListMatTransform CagdSrfListMatTransform

Keywords:

trivariates


TrivTVMergeScalar

(symb_tv.c:626)

Prototype:

  TrivTVStruct *TrivTVMergeScalar(const TrivTVStruct *TVW,
                                  const TrivTVStruct *TVX,
                                  const TrivTVStruct *TVY,
                                  const TrivTVStruct *TVZ)


Description:

Given a set of scalar trivariates, treat them as coordinates into a new trivariate. Assumes at least TVX is not NULL in which a scalar trivariate is returned. Assumes TVX/Y/Z/W are either E1 or P1 in which the weights are assumed to be identical and can be ignored if TVW exists or copied otherwise.

Parameters:

TVW: The weight component of new constructed trivariate, if have any.
TVX: The X component of new constructed trivariate.
TVY: The Y component of new constructed trivariate, if have any.
TVZ: The Z component of new constructed trivariate, if have any.


Returned Value:

TrivTVStruct *: A new trivariate constructed from given scalar trivariates.


See Also:

TrivTVSplitScalar TrivTVMergeScalar

Keywords:

merge symbolic computation


TrivTVMergeScalarN

(symb_tv.c:518)

Prototype:

  TrivTVStruct *TrivTVMergeScalarN(TrivTVStruct * const *TVVec, int NumTVs)


Description:

Given a vector of scalar trivariates, treat them as coordinates into a new vector trivariate. Assumes at least TVVec[1] is not NULL in which case a scalar trivariate is returned. Assumes TVVec[i] are either E1 or P1 in which case the weights are assumed to be identical and can be simply copied if exist.

Parameters:

TVVec: A vector of scalar trivariates, TVVec[0] holds weights if any.
NumTVs: Number of trivariates in CrvVec.


Returned Value:

TrivTVStruct *: A new trivariate constructed from given scalar trivariates.


See Also:

TrivTVMergeScalar TrivTVSplitScalarN

Keywords:

merge symbolic computation


TrivTVMeshC0Continuous

(triv_gen.c:1258)

Prototype:

  CagdBType TrivTVMeshC0Continuous(const TrivTVStruct *TV,
                                   TrivTVDirType Dir,
                                   int Idx)


Description:

Examine the mesh of the given surface across direction Dir in index of mesh Index for a real discontinuity in the mesh. This index will typically be for a knot multiplicity potential discont.

Parameters:

TV: To examine its potential discontinuity across Dir.
Dir: Direction to examine the discontinuity across.
Idx: Index where to examine the discontinuity.


Returned Value:

CagdBType: TRUE if continuous there, FALSE otherwise.


See Also:

TrivTVKnotHasC0Discont TrivTVIsMeshC0DiscontAt

Keywords:




TrivTVMeshC1Continuous

(triv_gen.c:1467)

Prototype:

  CagdBType TrivTVMeshC1Continuous(const TrivTVStruct *TV,
                                   TrivTVDirType Dir,
                                   int Idx)


Description:

Examine the mesh of the given surface across direction Dir in index of mesh Index for a real discontinuity in the mesh. This index will typically be for a knot multiplicity potential discont.

Parameters:

TV: To examine its potential discontinuity across Dir.
Dir: Direction to examine the discontinuity across.
Idx: Index where to examine the discontinuity.


Returned Value:

CagdBType: TRUE if continuous there, FALSE otherwise.


See Also:

TrivTVKnotHasC1Discont TrivTVIsMeshC1DiscontAt

Keywords:




TrivTVMult

(symb_tv.c:103)

Prototype:

  TrivTVStruct *TrivTVMult(const TrivTVStruct *TV1, const TrivTVStruct *TV2)


Description:

Given two trivars - multiply them coordinate-wise. The two trivars are promoted to same point type before the multiplication can take place.

Parameters:

TV1, TV2: Two trivar to multiply coordinate-wise.


Returned Value:

TrivTVStruct *: The product of TV1 * TV2 coordinate-wise.


See Also:

TrivTVDotProd TrivTVVecDotProd TrivTVScalarScale TrivTVMultScalar TrivTVInvert

Keywords:

product symbolic computation


TrivTVMultEval

(triveval.c:1395)

Prototype:

  CagdRType *TrivTVMultEval(CagdRType *UKnotVector,
                            CagdRType *VKnotVector,
                            CagdRType *WKnotVector,
                            int ULength,
                            int VLength,
                            int WLength,
                            int UOrder,
                            int VOrder,
                            int WOrder,
                            CagdPType *Mesh,
                            CagdPType *Params,
                            int NumOfParams,
                            int *RetSize,
                            CagdBspBasisFuncMultEvalType EvalType)


Description:

Computes multiple evaluations of the given trivariate space, as prescribed by U/V/WKnotVectors and U/V/WOrders, U/V/WLengths, and Mesh, at the requested NumOfParams parameter values, Params.

Parameters:

UKnotVector: U Knot sequence defining the spline space in U.
VKnotVector: V Knot sequence defining the spline space in V.
WKnotVector: W Knot sequence defining the spline space in W.
ULength: Length of Mesh in the U direction.
VLength: Length of Mesh in the V direction.
WLength: Length of Mesh in the W direction.
UOrder: Of the spline space in the U Direction.
VOrder: Of the spline space in the V Direction.
WOrder: Of the spline space in the W Direction.
Mesh: ULength * VLength * WLength control points, in R^3.
Params: At which to evaluate and compute the volume functions.
NumOfParams: Size of Params vector.
RetSize: Number of values returned per evaluation. 3 for position 9 for 1st derivative, etc.
EvalType: Type of evaluation requested: value (position), 1st derivative.


Returned Value:

CagdRType *: A vector of size NumOfParams * RetSize, holding the NumOfParams evaluation results, each of size RetSize. For position evaluation, RetSize = 3 and XYZ are returned. For 1st derivatives, RetSize = 9 and the Jacobian is returned, with dX/du, dX/dV, dX/dw first.


See Also:



Keywords:




TrivTVMultScalar

(symb_tv.c:174)

Prototype:

  TrivTVStruct *TrivTVMultScalar(const TrivTVStruct *TV1,
                                 const TrivTVStruct *TV2)


Description:

Given two trivar - a vector curve TV1 and a scalar curve TV2, multiply all TV1's coordinates by the scalar curve TV2. Returned trivar is a trivar representing the product of the two given trivars.

Parameters:

TV1, TV2: Two trivars to multiply.


Returned Value:

TrivTVStruct *: A trivar representing the product of TV1 and TV2.


See Also:

MvarMVMultScalar TrivTVDotProd TrivTVVecDotProd TrivTVMult TrivTVCrossProd

Keywords:

product symbolic computation


TrivTVNew

(triv_gen.c:47)

Prototype:

  TrivTVStruct *TrivTVNew(TrivGeomType GType,
                          CagdPointType PType,
                          int ULength,
                          int VLength,
                          int WLength)


Description:

Allocates the memory required for a new trivariate.

Parameters:

GType: Type of geometry the curve should be - B-spline, Bezier etc.
PType: Type of control points (E2, P3, etc.).
ULength: Number of control points in the U direction.
VLength: Number of control points in the V direction.
WLength: Number of control points in the W direction.


Returned Value:

TrivTVStruct *: An uninitialized freeform trivariate.


See Also:

TrivBzrTVNew TrivBspTVNew TrivPwrTVNew

Keywords:

trivariates allocation


TrivTVOfRev

(trivtrev.c:47)

Prototype:

  TrivTVStruct *TrivTVOfRev(const CagdSrfStruct *Srf)


Description:

Constructs a trivariate of revolution around the Z axis of given surface. Resulting trivariate will be a B-spline trivariate, while input may be either a B-spline or a Bezier surface.

Parameters:

Srf: To create trivariate of revolution around Z with.


Returned Value:

TrivTVStruct *: Trivariate of revolution.


See Also:

TrivTVOfRev2 TrivTVOfRevAxis TrivTVOfRevPolynomialApprox

Keywords:

trivariate of revolution trivariate constructors


TrivTVOfRev2

(trivtrev.c:239)

Prototype:

  TrivTVStruct *TrivTVOfRev2(const CagdSrfStruct *Srf,
                             CagdBType PolyApprox,
                             CagdRType StartAngle,
                             CagdRType EndAngle)


Description:

Constructs a trivariate of revolution around the Z axis of the given profile surface from StartAngle to EndAngle. Resulting trivariate will be a B-spline surface, while input may be either a B-spline or a Bezier surface.

Parameters:

Srf: To create trivariate of revolution around Z with.
PolyApprox: RUE for a polynomial approximation, FALSE for a precise rational construction.
StartAngle: tarting Angle to consider rotating Srf from, in degrees.
EndAngle: Terminating Angle to consider rotating Srf from, in degrees.


Returned Value:

TrivTVStruct *: Trivariate of revolution.


See Also:

TrivTVOfRev TrivTVOfRevAxis TrivTVOfRevPolynomialApprox

Keywords:

surface of revolution surface constructors


TrivTVOfRevAxis

(trivtrev.c:176)

Prototype:

  TrivTVStruct *TrivTVOfRevAxis(const CagdSrfStruct *Srf,
                                const TrivV4DType AxisPoint,
                                const TrivV4DType AxisVector,
                                CagdBType PolyApprox)


Description:

Constructs a trivariate of revolution around vector Axis of given profile surface. Resulting trivariate will be a B-spline trivariate, while input may be either a B-spline or a Bezier surface.

Parameters:

Srf: To create trivariate of revolution around Axis.
AxisPoint: Of axis of rotation of Srf.
AxisVector: f axis of rotation of Srf.
PolyApprox: RUE to construct a polynomial approximation volume of revolution, FALSE to create precise rational volume.


Returned Value:

TrivTVStruct *: Trivariate of revolution.


See Also:

TrivTVOfRev TrivTVOfRev2 TrivTVOfRevPolynomialApprox

Keywords:

trivariate of revolution trivariate constructors


TrivTVOfRevPolynomialApprox

(trivtrev.c:319)

Prototype:

  TrivTVStruct *TrivTVOfRevPolynomialApprox(const CagdSrfStruct *Srf)


Description:

Constructs a trivariate of revolution around the Z axis of given profile surface. Resulting trivariate will be a B-spline trivariate, while input may be either a B-spline or a Bezier surface. Resulting trivariate will be a polynomial B-spline trivariate, approximating a trivariate of revolution using a polynomial circle approx. (See Faux & Pratt "Computational Geometry for Design and Manufacturing").

Parameters:

Srf: To approximate a trivariate of revolution around Z with. Srf is assumed planar in a plane holding the Z axis.


Returned Value:

TrivTVStruct *: Trivariate of revolution approximation.


See Also:

TrivTVOfRev TrivTVOfRev2 TrivTVOfRevAxis

Keywords:

trivariate of revolution trivariate constructors


TrivTVOpenEnd

(triv_gen.c:1038)

Prototype:

  TrivTVStruct *TrivTVOpenEnd(const TrivTVStruct *TV)


Description:

Converts an arbitrary B-spline trivariate to a B-spline trivariate with open end conditions.

Parameters:

TV: B-spline trivariate to convert to open end conditions.


Returned Value:

TrivTVStruct *: A B-spline trivariate with open end conditions, representing the same geometry as TV.


See Also:

TrivCnvrtPeriodic2FloatTV TrivCnvrtFloat2OpenTV

Keywords:

conversion


TrivTVPointInclusion

(triv_aux.c:872)

Prototype:

  CagdBType TrivTVPointInclusion(TrivTVStruct *TV, const IrtPtType Pt)


Description:

Point inclusion test in a trivariate. TrivTVPointInclusionPrep must be called before this function is invoked for a valid result. Optimized for many queries of point inclusions over this TV.

Parameters:

TV: To compute point inclusion for.
Pt: Point to test if inside TV or not.


Returned Value:

CagdBType: TRUE if inside, FALSE otherwise.


See Also:

TrivTVPointInclusionPrep TrivTVPointInclusionFree

Keywords:

point inclusion


TrivTVPointInclusionFree

(triv_aux.c:905)

Prototype:

  void TrivTVPointInclusionFree(TrivTVStruct *TV)


Description:

Freeing step for testing for point inclusions in a trivariate. Should be called after all TrivTVPointInclusion calls are done.

Parameters:

TV: To free the auxiliary data used for TV point inclusion test.


Returned Value:

void


See Also:

TrivTVPointInclusion TrivTVPointInclusionPrep

Keywords:

point inclusion


TrivTVPointInclusionPrep

(triv_aux.c:825)

Prototype:

  void TrivTVPointInclusionPrep(TrivTVStruct *TV, int n)


Description:

Preparation step for testing for point inclusions in a trivariate. Must be called before TrivTVPointInclusion is called. Optimized for many queries of point inclusions over this TV.

Parameters:

TV: To make the necessary steps for point inclusion test.
n: Sampling rate. The large this number the better the accuracy (near the boundaries) at the additional computational cost. Roughly the number of samples of the TV in each parametric direction and can vary between ~10 to ~100.


Returned Value:

void


See Also:

TrivTVPointInclusion TrivTVPointInclusionFree

Keywords:

point inclusion


TrivTVRefineAtParams

(triv_ref.c:41)

Prototype:

  TrivTVStruct *TrivTVRefineAtParams(const TrivTVStruct *TV,
                                     TrivTVDirType Dir,
                                     CagdBType Replace,
                                     CagdRType *t,
                                     int n)


Description:

Given a trivariate, refines it at the given n knots as defined by the vector t. If Replace is TRUE, the values replace the current knot vector. Returns pointer to refined TV (Note a Bezier trivariate will be converted into a Bspline trivariate).

Parameters:

TV: Trivariate to refine according to t in direction Dir.
Dir: Direction of refinement. Either U or V or W.
Replace: If TRUE t is a knot vector exactly in the length of the knot vector in direction Dir in TV and t simply replaces that knot vector. If FALSE, the knot vector in direction Dir in TV is refined by adding all the knots in t.
t: Knot vector to refine/replace the knot vector of TV in direction Dir.
n: Length of vector t.


Returned Value:

TrivTVStruct *: The refined trivariate. Always a Bspline trivariate.


Keywords:

trivariates


TrivTVRegionFromTV

(triv_aux.c:317)

Prototype:

  TrivTVStruct *TrivTVRegionFromTV(const TrivTVStruct *TV,
                                   CagdRType t1,
                                   CagdRType t2,
                                   TrivTVDirType Dir)


Description:

Given a tri-variate, returns a sub-region of it.

Parameters:

TV: To extract a sub-region from.
t1, t2: Domain to extract from TV, in parametric direction Dir.
Dir: Direction to extract the sub-region. Either U or V or W.


Returned Value:

TrivTVStruct *: A sub-region of TV from t1 to t2 in direction Dir.


Keywords:

trivariates


TrivTVReverse2Dirs

(triv_aux.c:586)

Prototype:

  TrivTVStruct *TrivTVReverse2Dirs(const TrivTVStruct *TV,
                                   TrivTVDirType Dir1,
                                   TrivTVDirType Dir2)


Description:

Reverse/swap the designated two dirs.

Parameters:

TV: To construct a reverse TV for.
Dir1, Dir2: The two directions in TV to swap.


Returned Value:

TrivTVStruct *: Reversed/swap trivariate.


See Also:

TrivTVReverseDir

Keywords:




TrivTVReverseDir

(triv_aux.c:452)

Prototype:

  TrivTVStruct *TrivTVReverseDir(const TrivTVStruct *TV, TrivTVDirType Dir)


Description:

Reverse the designated direction

Parameters:

TV: To construct a reverse TV for.
Dir: The direction in TV to reverse.


Returned Value:

TrivTVStruct *: Reversed trivariate.


See Also:

TrivTVReverse2Dirs

Keywords:




TrivTVRtnlMult

(symb_tv.c:324)

Prototype:

  TrivTVStruct *TrivTVRtnlMult(const TrivTVStruct *TV1X,
                               const TrivTVStruct *TV1W,
                               const TrivTVStruct *TV2X,
                               const TrivTVStruct *TV2W,
                               CagdBType OperationAdd)


Description:

Given two trivars - multiply them using the quotient product rule:
 X = X1 W2 +/- X2 W1

All provided trivars are assumed to be non rational scalar trivars. Returned is a non rational scalar trivar (CAGD_PT_E1_TYPE).

Parameters:

TV1X: Numerator of first trivar.
TV1W: Denominator of first trivar. Can be NULL.
TV2X: Numerator of second trivar.
TV2W: Denominator of second trivar. Can be NULL.
OperationAdd: TRUE for addition, FALSE for subtraction.


Returned Value:

TrivTVStruct *: The result of TV1X TV2W +/- TV2X TV1W.


See Also:

MvarMVRtnlMult. TrivTVDotProd TrivTVVecDotProd TrivTVMultScalar TrivTVInvert

Keywords:

product symbolic computation


TrivTVSetDomain

(triv_aux.c:104)

Prototype:

  TrivTVStruct *TrivTVSetDomain(TrivTVStruct *TV,
                                CagdRType UMin,
                                CagdRType UMax,
                                CagdRType VMin,
                                CagdRType VMax,
                                CagdRType WMin,
                                CagdRType WMax)


Description:

Affinely set the parametric domain of a trivar, in place.

Parameters:

TV: To set its parametric domain.
UMin: Minimal domain's new U boundary.
UMax: Maximal domain's new U boundary.
VMin: Minimal domain's new V boundary.
VMax: Maximal domain's new V boundary.
WMin: Minimal domain's new W boundary.
WMax: Maximal domain's new W boundary.


Returned Value:

TrivTVStruct *: Updated trivariate, in place.


See Also:

TrivTVDomain TrivTVSetDomain2

Keywords:




TrivTVSetDomain2

(triv_aux.c:176)

Prototype:

  TrivTVStruct *TrivTVSetDomain2(TrivTVStruct *TV,
                                 CagdRType Min,
                                 CagdRType Max,
                                 TrivTVDirType Dir)


Description:

Affinely set the parametric domain of the trivar in Dir, in place.

Parameters:

TV: To set its parametric domain.
Min: Minimal domain's new boundary, in Dir.
Max: Maximal domain's new boundary, in Dir.
Dir: Direction of trivariate to change domain: U, V, or W.


Returned Value:

TrivTVStruct *: Updated trivariate, in place.


See Also:

TrivTVDomain TrivTVSetDomain

Keywords:




TrivTVSplitScalar

(symb_tv.c:439)

Prototype:

  void TrivTVSplitScalar(const TrivTVStruct *TV,
                         TrivTVStruct **TVW,
                         TrivTVStruct **TVX,
                         TrivTVStruct **TVY,
                         TrivTVStruct **TVZ)


Description:

Given a trivariate splits it to its scalar component trivariates. Ignores all dimensions beyond the third, Z, dimension.

Parameters:

TV: Trivariate to split.
TVW: The weight component of TV, if have any.
TVX: The X component of TV.
TVY: The Y component of TV, if have any.
TVZ: The Z component of TV, if have any.


Returned Value:

void


See Also:

TrivTVMergeScalar TrivTVSplitScalar TrivTVSplitScalarN

Keywords:

split symbolic computation


TrivTVSplitScalarNToData

(symb_tv.c:364)

Prototype:

  TrivTVStruct **TrivTVSplitScalarNToData(const TrivTVStruct *TV,
                                          TrivTVStruct **TVs)


Description:

Given a trivariate, splits it to its scalar component trivariates.

Parameters:

TV: Trivariate to split.
TVs: A vector of scalar trivariates - components of TV.


Returned Value:

TrivTVStruct **: A vector of scalar trivariates - components of TV.


See Also:

TrivTVSplitScalar TrivTVMergeScalarN

Keywords:

split symbolic computation


TrivTVSub

(symb_tv.c:68)

Prototype:

  TrivTVStruct *TrivTVSub(const TrivTVStruct *TV1, const TrivTVStruct *TV2)


Description:

Given two trivars - subtract them coordinate-wise. The two trivars are promoted to same point type before the multiplication can take place. Furthermore, order and continuity are matched as well.

Parameters:

TV1, TV2: Two trivar to subtract coordinate-wise.


Returned Value:

TrivTVStruct *: The difference of TV1 - TV2 coordinate-wise.


See Also:

MvarMVSub TrivTVAdd TrivTVMult

Keywords:

subtraction symbolic computation


TrivTVSubdivAtAllC0Discont

(triv_sub.c:373)

Prototype:

  TrivTVStruct *TrivTVSubdivAtAllC0Discont(const TrivTVStruct *TV)


Description:

Subdivides the given trivariate at all C^0 potential discontinuity locations.

Parameters:

TV: To subdivide at all C^0 discontinuity locations.


Returned Value:

TrivTVStruct *: Trivariates that result from the subdivision.


See Also:

TrivTVsSubdivAtParams BspKnotAllC1Discont TrivTVsSubdivAtAllC0Discont BspTVsSubdivAtAllDetectedLocations TrivTVsSubdivAtAllC1Discont

Keywords:




TrivTVSubdivAtAllC1Discont

(triv_sub.c:431)

Prototype:

  TrivTVStruct *TrivTVSubdivAtAllC1Discont(const TrivTVStruct *TV)


Description:

Subdivides the given trivariate at all C^1 potential discontinuity locations.

Parameters:

TV: To subdivide at all C^1 discontinuity locations.


Returned Value:

TrivTVStruct *: Trivariates that result from the subdivision.


See Also:

TrivTVsSubdivAtParams BspKnotAllC1Discont TrivTVsSubdivAtAllC0Discont BspTVsSubdivAtAllDetectedLocations TrivTVsSubdivAtAllC1Discont

Keywords:




TrivTVSubdivAtParam

(triv_sub.c:29)

Prototype:

  TrivTVStruct *TrivTVSubdivAtParam(const TrivTVStruct *TV,
                                    CagdRType t,
                                    TrivTVDirType Dir)


Description:

Given a tri-variate, subdivides it at parameter value t in direction Dir.

Parameters:

TV: Trivariate to subdivide.
t: Parameter to subdivide at.
Dir: Direction of subdivision.


Returned Value:

TrivTVStruct *: A list of two trivariates, result of the subdivision.


Keywords:

trivariates


TrivTVTransform

(triv_gen.c:578)

Prototype:

  void TrivTVTransform(TrivTVStruct *TV,
                       const CagdRType *Translate,
                       CagdRType Scale)


Description:

Linearly transforms, in place, given TV as specified by Translate (first) and Scale (Second).

Parameters:

TV: Trivariate to transform.
Translate: Translation factor. Can be NULL for non.
Scale: Scaling factor.


Returned Value:

void


Keywords:

trivariates


TrivTVVecDotProd

(symb_tv.c:246)

Prototype:

  TrivTVStruct *TrivTVVecDotProd(const TrivTVStruct *TV, const CagdVType Vec)


Description:

Given a trivar and a vector - computes their dot product. Returned trivar is a scalar trivar representing the dot product.

Parameters:

TV: Trivar to multiply and compute a dot product for.
Vec: Vector to project TV onto.


Returned Value:

TrivTVStruct *: A scalar trivar representing the dot product of TV . Vec.


See Also:

MvarMVVecDotProd TrivTVDotProd TrivTVMult TrivTVMultScalar TrivTVInvert TrivTVCrossProd TrivTVVecCrossProd

Keywords:

product dot product symbolic computation


TrivTVVolume

(triv_aux.c:748)

Prototype:

  CagdRType TrivTVVolume(const TrivTVStruct *TV, CagdBType VolType)


Description:

Computes the volume enclosed in the given trivariate.

Parameters:

TV: To compute its volume.
VolType: TRUE to integrate the surfaces with respect to the XY plane, FALSE to integrate the surfaces with respect to the origin,


Returned Value:

CagdRType: The computed volume (can be negative if TV reversed).


See Also:

TrivSrfArea

Keywords:

bbox bounding box


TrivTVsSame

(triv_gen.c:1128)

Prototype:

  CagdBType TrivTVsSame(const TrivTVStruct *Tv1,
                        const TrivTVStruct *Tv2,
                        CagdRType Eps)


Description:

Compare the two trivariates for similarity.

Parameters:

Tv1, Tv2: The two trivariates to compare.
Eps: Tolerance of equality.


Returned Value:

CagdBType: TRUE if trivariates are the same, FALSE otherwise.


See Also:

CagdSrfsSame CagdCrvsSame MvarMVsSame VMdlVModelsSame.

Keywords:




TrivTVsSubdivAtAllC0Discont

(triv_sub.c:349)

Prototype:

  TrivTVStruct *TrivTVsSubdivAtAllC0Discont(const TrivTVStruct *TVs)


Description:

Subdivides the given list of trivariates at all C^0 potential discontinuity locations.

Parameters:

TVs: To subdivide at all C^0 discontinuity locations.


Returned Value:

TrivTVStruct *: Trivariates that result from the subdivision.


See Also:

TrivTVSubdivAtParams BspKnotAllC1Discont TrivTVSubdivAtAllC1Discont.

Keywords:




TrivTVsSubdivAtAllC1Discont

(triv_sub.c:407)

Prototype:

  TrivTVStruct *TrivTVsSubdivAtAllC1Discont(const TrivTVStruct *TVs)


Description:

Subdivides the given list of trivariates at all C^1 potential discontinuity locations.

Parameters:

TVs: To subdivide at all C^1 discontinuity locations.


Returned Value:

TrivTVStruct *: Trivariates that result from the subdivision.


See Also:

TrivTVsSubdivAtParams BspKnotAllC1Discont TrivTVsSubdivAtAllC0Discont BspTVsSubdivAtAllDetectedLocations TrivTVSubdivAtAllC1Discont

Keywords:




TrivTVsSubdivAtAllDetectedLocations

(triv_sub.c:291)

Prototype:

  TrivTVStruct *TrivTVsSubdivAtAllDetectedLocations(const TrivTVStruct *TVs,
                                                    TrivTVTestingFuncType
                                                                   TVTestFunc)


Description:

Subdivides the given list of trivariates TVs at all locations TVTesTFunc detects. Examples for TVTesTFunc can be TrivTVKnotHasC0Discont or TrivTVKnotHasC1Discont.

Parameters:

TVs: Trivariates to subdivide at all detected locations by SrfTestFunc.
TVTestFunc: Trivariate testing function, like TrivTVKnotHasC0Discont.


Returned Value:

TrivTVStruct *: Set of subdivided trivariates, or NULL if nothing was detected.


See Also:

TrivTVKnotHasC0Discont TrivTVKnotHasC1Discont TrivTVSubdivAtParam BspSrfsSubdivAtAllDetectedLocations BspCrvsSubdivAtAllDetectedLocations

Keywords:




TrivTriangleCopy

(triv_gen.c:470)

Prototype:

  TrivTriangleStruct *TrivTriangleCopy(const TrivTriangleStruct *Triangle)


Description:

Allocates and duplicates all slots of a triangle structure.

Parameters:

Triangle: Triangle to duplicate.


Returned Value:

TrivTriangleStruct *: Duplicated triangle.


Keywords:




TrivTriangleCopyList

(triv_gen.c:498)

Prototype:

  TrivTriangleStruct *TrivTriangleCopyList(const TrivTriangleStruct
                                                                  *TriangleList)


Description:

Duplicates a list of triangle structures.

Parameters:

TriangleList: List of triangle to duplicate.


Returned Value:

TrivTriangleStruct *: Duplicated list of triangle.


Keywords:




TrivTriangleFree

(triv_gen.c:527)

Prototype:

  void TrivTriangleFree(TrivTriangleStruct *Triangle)


Description:

Deallocates and frees all slots of a triangle structure.

Parameters:

Triangle: Triangle to free.


Returned Value:

void


Keywords:




TrivTriangleFreeList

(triv_gen.c:549)

Prototype:

  void TrivTriangleFreeList(TrivTriangleStruct *TriangleList)


Description:

Deallocates and frees a list of triangle structures.

Parameters:

TriangleList: Triangle list to free.


Returned Value:

void


Keywords:




TrivTriangleNew

(triv_gen.c:446)

Prototype:

  TrivTriangleStruct *TrivTriangleNew(void)


Description:

Allocates the memory required for a new triangle.

Parameters:

None


Returned Value:

TrivTriangleStruct *: An uninitialized triangle.


Keywords:

allocation


TrivTrilinearSrf

(trivruld.c:142)

Prototype:

  TrivTVStruct *TrivTrilinearSrf(const CagdPtStruct *Pt000,
                                 const CagdPtStruct *Pt001,
                                 const CagdPtStruct *Pt010,
                                 const CagdPtStruct *Pt011,
                                 const CagdPtStruct *Pt100,
                                 const CagdPtStruct *Pt101,
                                 const CagdPtStruct *Pt110,
                                 const CagdPtStruct *Pt111,
                                 CagdPointType PType)


Description:

Constructs a trilinear volume between the given eight corner points.

Parameters:

Pt000, Pt001, Pt010, Pt011, Pt100, Pt101, Pt110, Pt111: The eight corners of the trilinear.
PType: The type of the 8 given points.


Returned Value:

TrivTVStruct *: Constructed trilinear.


See Also:

CagdBilinearSrf

Keywords:




TrivTwoTVsMorphing

(trivmrph.c:36)

Prototype:

  TrivTVStruct *TrivTwoTVsMorphing(const TrivTVStruct *TV1,
                                   const TrivTVStruct *TV2,
                                   CagdRType Blend)


Description:

Given two compatible trivariates (See function TrivMakeTVsCompatible), computes a convex blend between them according to Blend which must be between zero and one. Returned is the new blended trivariate.

Parameters:

TV1, TV2: The two trivariates to blend.
Blend: A parameter between zero and one


Returned Value:

TrivTVStruct *: TV2 * Blend + TV1 * (1 - Blend).


See Also:

SymbTwoCrvsMorphing SymbTwoCrvsMorphingCornerCut SymbTwoCrvsMorphingMultiRes SymbTwoSrfsMorphing TrivMakeTVsCompatible

Keywords:

morphing


TrivUpdateBndrySrfinTV

(triv_aux.c:988)

Prototype:

  int TrivUpdateBndrySrfinTV(TrivTVStruct *TV,
                             const CagdSrfStruct *Srf,
                             TrivTVBndryType TVBndry)


Description:

Update one boundary of trivariate TV using the given surface Srf.

Parameters:

TV: Trivariate to update one of its boundaries.
Srf: Surface information to update with the selected boundary of TV. face (and not UV reversed etc.).
TVBndry: he boundary in Srf to update with Crv.


Returned Value:

int: TRUE, if successful, FALSE otherwise.


See Also:

CagdUpdateBndryCrvInSrf

Keywords:




TrivVectCross3Vecs

(geomat4d.c:180)

Prototype:

  void TrivVectCross3Vecs(const TrivV4DType A,
                          const TrivV4DType B,
                          const TrivV4DType C,
                          TrivV4DType Res)


Description:

Computes a vector in R^4 that is perpendicular to the given three vectors.
 with(linalg);
 readlib(C);

 d := det( matrix( [ [I, J, K, L],
                   [A[0], A[1], A[2], A[3]],
                   [B[0], B[1], B[2], B[3]],
                   [C[0], C[1], C[2], C[3]] ] ) );
 coeff( d, I );
 coeff( d, J );
 coeff( d, K );
 coeff( d, L );


Parameters:

A, B, C: The three vectors to compute their cross product.
Res: Where the output goes into.


Returned Value:

void


Keywords:

cross product


TrivZTwistExtrudeSrf

(trivextr.c:142)

Prototype:

  TrivTVStruct *TrivZTwistExtrudeSrf(const CagdSrfStruct *Srf,
                                     CagdBType Rational,
                                     CagdRType ZPitch)


Description:


Constructs a full circular twisted/rotated extrusion volume in the +Z direction for the given profile surface. Input surface can be either a Bspline or a Bezier surface.

Parameters:

Srf: To twist and extrude in the +Z direction.
Rational: TRUE to construct a rational (and precise) twist, FALSE to approximate using polynomials.
ZPitch: The +Z amount for full 360 degrees. If zero, the result will be a planar (degenerated) surface. A negative value will reverse the twist.


Returned Value:

TrivTVStruct *: A twisted extrusion trivariate.


See Also:

TrivExtrudeSrf

Keywords:

trivariate constructors