(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:
(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:
(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:
(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:
(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:
(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:
See Also:
MCImprovePointOnIsoSrfPrelude
MCImprovePointOnIsoSrf
Keywords:
(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:
(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
(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
(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
(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:
(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:
(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:
See Also:
TrivTVFillet
Keywords:
blending
filleting
(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
(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
(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
(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:
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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:
(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
(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
(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:
(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
(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
(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:
(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
(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
(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
(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:
(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:
(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:
(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:
Keywords:
debugging
(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:
Keywords:
debugging
(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
(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
(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:
(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:
(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:
(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:
See Also:
TrivEvalTVCurvaturePrelude
TrivEvalTVCurvature
TrivEvalHessian
TrivEvalGradient
Keywords:
(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:
(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:
(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
(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
(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:
See Also:
TrivFFDObjectTV
Keywords:
(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:
(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:
(triv_ffd.c:686)
Prototype:
void TrivFFDTileFreeBndries(IPObjectStruct *BndryTiles[3][3][3])
Description:
Free the boundary tiles created by TrivFFDTileCropBndries
Parameters:
Returned Value:
See Also:
TrivFFDTileCropBndries
Keywords:
(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:
(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:
Keywords:
error handling
(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:
See Also:
TrivPrepInverseQueries
TrivInverseQuery
Keywords:
(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:
(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:
(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:
(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:
Keywords:
(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:
(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:
(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:
(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:
(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:
(triv_iga.c:3016)
Prototype:
TrivIGAArrangementID TrivIGADataManagerAllocateArrangement(
TrivIGADataManager *DM)
Description:
Allocates an IGA arrangement and associates it with new ID.
Parameters:
Returned Value:
TrivIGAArrangementID: ID of the new arrangement in success and
INVALID_ARRANGEMENT_ID in failure
|
---|
Keywords:
(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:
(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:
(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:
(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:
(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:
(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:
(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
(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:
(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:
(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:
(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:
(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:
Keywords:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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
(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:
(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:
(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:
(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:
(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:
(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
(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:
See Also:
Keywords:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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:
(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
(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
(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
(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:
Returned Value:
struct TrivInverseQueryStruct *: Handle for retrieval of results.
|
---|
See Also:
TrivInverseQuery
TrivFreeInverseQueries
Keywords:
(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:
(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:
(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:
(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:
(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:
(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:
(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
(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
(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
(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
(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
(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
(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:
Keywords:
trivariates
(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
(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
(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
(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:
(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
(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
(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:
Keywords:
bbox
bounding box
(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:
See Also:
TrivTVBlockEvalInit
TrivTVBlockEvalSetMesh
TrivTVBlockEvalOnce
Keywords:
(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:
(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:
(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:
See Also:
TrivTVBlockEvalInit
TrivTVBlockEvalOnce
TrivTVBlockEvalDone
Keywords:
(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:
(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:
(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
(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
(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
(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
(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
(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
(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
(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:
See Also:
TrivTVSetDomain
TrivTVSetDomain2
Keywords:
trivariates
(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
(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
(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:
See Also:
TrivTVEvalToData
TrivTVEval2Malloc
Keywords:
evaluation
trivariates
(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:
(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
(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:
See Also:
TrivTVEvalMalloc
Keywords:
evaluation
trivariates
(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:
See Also:
TrivTVEvalMalloc
Keywords:
evaluation
trivariates
(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
(triv_gen.c:386)
Prototype:
void TrivTVFree(TrivTVStruct *TV)
Description:
Deallocates and frees all slots of a trivariate structure.
Parameters:
Returned Value:
Keywords:
trivariates
(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:
Keywords:
trivariates
(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
(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:
See Also:
TrivTVAdjSrfCmpFuncType
CagdSrfSame2
CagdSrfSame3
CagdSrfSame4
TrivTVGenAdjacencyInfo2
Keywords:
(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:
See Also:
TrivTVAdjSrfCmpFuncType
CagdSrfSame2
CagdSrfSame3
CagdSrfSame4
TrivTVGenAdjacencyInfo
Keywords:
(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
(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
(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
(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
(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
(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
(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:
(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:
(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
(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
(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:
Keywords:
bbox
bounding box
(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
(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
(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:
See Also:
TrivTVMatTransform
TrivTVListMatTransform
CagdSrfListMatTransform
Keywords:
trivariates
(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
(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
(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:
(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:
(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
(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:
(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
(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
(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
(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
(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
(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
(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
(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
(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:
See Also:
TrivTVPointInclusion
TrivTVPointInclusionPrep
Keywords:
point inclusion
(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:
See Also:
TrivTVPointInclusion
TrivTVPointInclusionFree
Keywords:
point inclusion
(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
(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
(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:
(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:
(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
(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:
(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:
(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:
See Also:
TrivTVMergeScalar
TrivTVSplitScalar
TrivTVSplitScalarN
Keywords:
split
symbolic computation
(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
(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
(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:
(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:
(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
(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:
Keywords:
trivariates
(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
(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
(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:
(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:
(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:
(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:
(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:
(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:
(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:
Keywords:
(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:
Keywords:
(triv_gen.c:446)
Prototype:
TrivTriangleStruct *TrivTriangleNew(void)
Description:
Allocates the memory required for a new triangle.
Parameters:
Returned Value:
TrivTriangleStruct *: An uninitialized triangle.
|
---|
Keywords:
allocation
(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:
(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
(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:
(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:
Keywords:
cross product
(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