Eval on curves and surfaces

Types

A3DEAnalyticType

Fields

A3DStatus A3DGetCurveAsAnalytic

param

kA3DAnalyticNone

kA3DAnalyticCircle

kA3DAnalyticAlreadyCircle

kA3DAnalyticLine

kA3DAnalyticAlreadyLine

kA3DAnalyticCone

kA3DAnalyticAlreadyCone

kA3DAnalyticCylinder

kA3DAnalyticAlreadyCylinder

kA3DAnalyticPlane

kA3DAnalyticAlreadyPlane

kA3DAnalyticSphere

kA3DAnalyticAlreadySphere

kA3DAnalyticTorus

kA3DAnalyticAlreadyTorus

Functions

A3DStatus

A3DCrvGetInterval

A3DStatus

A3DCrvEvaluate

A3DStatus

A3DCrvEvaluatePointAndNormal

A3DStatus

A3DCrvIsPeriodic

A3DStatus

A3DSurfGetDomain

A3DStatus

A3DSurfEvaluate

A3DStatus

A3DSurfIsDegenerated

A3DStatus

A3DSurfIsPeriodic

A3DStatus

A3DSurfIsG1Continuous

A3DStatus

A3DSimplifyCurveWithAnalytics

A3DStatus

A3DSimplifyCurveWithAnalyticsFromCoEdge

A3DStatus

A3DSimplifySurfaceWithAnalytics

A3DStatus

A3DSurfEvaluateNormal

Detailed Description

group a3d_evaluate

Type Documentation

enum A3DEAnalyticType

Tells what kind of curve has been created by A3DGetCurveAsAnalytic.

Version

5.0

Values:

enumerator kA3DAnalyticNone

No Curve.

enumerator kA3DAnalyticCircle

Changed to circle.

enumerator kA3DAnalyticAlreadyCircle

Kept as a circle.

enumerator kA3DAnalyticLine

Changed to Line.

enumerator kA3DAnalyticAlreadyLine

Kept as a line.

enumerator kA3DAnalyticCone

Changed to Cone.

enumerator kA3DAnalyticAlreadyCone

Kept as a cone.

enumerator kA3DAnalyticCylinder

Changed to Cylinder.

enumerator kA3DAnalyticAlreadyCylinder

Kept as a cylinder.

enumerator kA3DAnalyticPlane

Changed to Plane.

enumerator kA3DAnalyticAlreadyPlane

Kept as a plane.

enumerator kA3DAnalyticSphere

Changed to Sphere.

enumerator kA3DAnalyticAlreadySphere

Kept as a sphere.

enumerator kA3DAnalyticTorus

Changed to Torus.

enumerator kA3DAnalyticAlreadyTorus

Kept as a torus.

Field Documentation

A3DStatus A3DGetCurveAsAnalytic param

Function to get curves as analytic (line or circle) according to a certain tolerance.

delete RTF data created by A3DMkpRTFInit

Get each independent field of a RTF data.

Calculates the bounding box of the model file entity, without using any callback functions.

Draws the markup item entities, using the callbacks defined by A3DDrawInitCallbacks.

Draws the representation item entities, using the callbacks defined by A3DDrawInitCallbacks.

Draws the model file entities, using the callbacks defined by A3DDrawInitCallbacks.

Enables internal SIGSEGV handling (Linux only)

Function to compute Hidden Line Removal on a A3DAsmModelFile.

Function to project Point Cloud on BrepModel with a A3DProjectPointCloudManager.

Function to get surface as analytic according to a certain tolerance.

Function to get curves as analytic (line or circle) according to a certain tolerance Try to use UV curves from Edges if exist, otherwise use 3D Curves.

Use A3DEntityDelete to delete the analytic curve after using it.

Deprecated:

Use A3DSimplifyCurveWithAnalytics instead. This will be removed in version 2026.1.0.

Use A3DEntityDelete to delete the analytic curve after using it.
Deprecated:

use A3DSimplifyCurveWithAnalyticsFromCoEdge instead. This will be removed in version 2026.1.0.

Use A3DEntityDelete to delete the analytic surface after using it. Recognized surface type are: Conic Surface Cylindrical Surface Plane Surface Spherical Surface Toric Surface
Deprecated:

use A3DSimplifySurfaceWithAnalytics instead. This will be removed in version 2026.1.0.

Version

5.0

Version

5.0

Version

5.0

Deprecated:

use A3DProjectPointCloud3 instead. This will be removed in version 2026.1.0.

Version

8.1

Memory Management

In case of success, ppProjectedPointCloud contains heap allocated memory you are responsible for. To free the memory on ppProjectedPointCloud, call A3DProjectPointCloud2 by setting pManager to 0. In this case, all other parameters are ignored:

A3DProjectPointCloud2(0, 0, 0, A3D_FALSE, 0, 0.0, ppProjectedPointCloud);

Deprecated:

use A3DComputeOrthoHLROnModelFile3 instead. This will be removed in version 2026.1.0.

Call A3DComputeOrthoHLROnModelFile( NULL, pOptMrkRView, NULL, pNumberHLRData, pppHLRData) to release pppHLRData structure ( A3DCrvPolyLine was not released) Note: If the model file doesn’t contain any representation items, function returns A3D_INVALID_DATA error;
Version

8.1

Deprecated:

use A3DComputeOrthoHLROnModelFile3 instead. This will be removed in version 2026.1.0.

Version

9.0

Call A3DComputeOrthoHLROnModelFile2( NULL, NULL, NULL, pNumberHLRRepItem, pppHLRRepItem) to release pppHLRRepItem structure ( internal A3DCrvPolyLine was not released)

If pOptMrkRView is a cutting view, psSectionParametersData can be set to 0. In this case, the cutting planes within pOptMrkRView are used for the computation. Planes must to ordered and be set a profile, otherwise the function will return #A3D_TOOLS_INVALID_SECTION_PLANE.

This function activates the handling of the SIGSEGV signal on Linux. When this function is activated, SIGSEGV is handled and an exception is thrown to return A3D_EXCEPTION.

Remark

If the model file doesn’t contain any representation item, the function will return #A3D_INVALID_DATA error

Deprecated:

the default behavior has changed with 11.2 to disable the SIGSEGV handling This will be removed in version 2026.1.0.

Deprecated:

The Draw module is deprecated and will be removed in version 2026.1.0.

To set the uiDrawFlags argument, use the flags defined in Flags for Drawing Model File Entities.
Version

2.0

Deprecated:

The Draw module is deprecated and will be removed in version 2026.1.0.

Deprecated:

The Draw module is deprecated and will be removed in version 2026.1.0.

Deprecated:

The Draw module is deprecated and will be removed in version 2026.1.0.

To set the uiDrawFlags argument, use the flags defined in Flags for Drawing Model File Entities.
Version

2.0

Version

2.0

Version

2.0

Deprecated:

This function is deprecated. Please use A3DMkpRTFFieldGet instead to implement the same behaviour. This will be removed in version 2026.1.0.

Version

4.2

Deprecated:

This function is deprecated. Please use A3DMkpRTFFieldDelete instead to implement the same behaviour. This will be removed in version 2026.1.0.

Version

4.2

Warning

must be deleted by the user

Warning

If A3DProjectPointCloudManagerCreateFromRI is used to create pManager, and A3DProjectPointCloudManagerDataFromRI::m_bUseExactComputation is set to false, you can’t set bUseExactComputation to true. In this case, an A3D_INVALID_DATA error is returned.

Warning

You must call this function before A3DDllInitialize

Retval A3D_SUCCESS:

if an analytic has been created

Retval A3D_ERROR:

Retval A3D_SUCCESS:

if an analytic has been created

Retval A3D_ERROR:

Return:

A3D_SUCCESS on success, or an error code on failure

Return:

A3D_SUCCESS on success, or an error code on failure

Param pSrf:

[in] The input surface

Param dTol:

[in] Tolerance

Param pAnalyticSurface:

[out] The new analytic surface.

Param peAnalyticType:

[out] The type of analytic surface

Retval A3D_SUCCESS:

Retval A3D_INVALID_ENTITY_NULL:

Retval A3D_INVALID_ENTITY_TYPE:

Retval A3D_ERROR:

Return:

A3D_SUCCESS on success, or an error code on failure

Param pManager:

[in] A3DProjectPointCloudManager created by A3DProjectPointCloudManagerCreateFromModelFile function.

Param uPointCloudSize:

[in] Number of points in pPointCloudToProject.

Param pPointCloudToProject:

[in] Point cloud to project. This point cloud must be in the same coordinate system as the BrepData structures stored in BrepModel.

Param bUseExactComputation:

[in] Flag to use exact topology. When this flag is false, the algorithm drops the point cloud on the faceted geometry, otherwise, the exact topology is used.

Param uNbThreads:

[in] Number of threads wanted. 0 means non multi-thread. Please avoid setting a number of threads larger than the number of CPU cores.

Param dInsidePointEdgeTolerance:

[in] Tolerance used to check if projection point which is inside a face is on edge.

Param ppProjectedPointCloud:

[out] Point cloud projected.

Retval A3D_SUCCESS:

Retval A3D_INVALID_DATA_STRUCT_NULL:

Retval A3D_INVALID_DATA_STRUCT_SIZE:

Retval A3D_INVALID_ENTITY_TYPE:

Retval A3D_INVALID_DATA:

Retval A3D_ERROR:

Return:

A3D_SUCCESS on success, or an error code on failure

Param pModelFile:

[in] Model file to work on.

Param pOptMrkRView:

[in] optional A3DMkpView (cut, filter and/or move entities).

Param psHLRViewPlaneData:

[in] define a plane as a camera with orthogonal projection.

Param pNumberHLRData:

[out] Number A3DHLRRepresentationItemData.

Param pppHLRData:

[out] HLR curve result grouped by A3DRiRepresentationItem entity. pppHLRData is automatically allocated by A3DComputeOrthoHLROnModelFile.

Retval A3D_SUCCESS:

Retval A3D_INVALID_DATA_STRUCT_NULL:

Retval A3D_INVALID_DATA_STRUCT_SIZE:

Retval A3D_INVALID_ENTITY_TYPE:

Retval A3D_INVALID_DATA:

Retval A3D_ERROR:

Retval A3D_INCOMPATIBLE_FUNCTION_WITH_KEEP_PARSED_ENTITY_MODE:

Return:

A3D_SUCCESS on success, or an error code on failure

Param pModelFile:

[in] Model file to work on.

Param pOptMrkRView:

[in] optional A3DMkpView (cut, filter and/or move entities).

Param psHLRViewPlaneData:

[in] define a plane as a camera with orthogonal projection.

Param pNumberHLRRepItem:

[out] Number A3DHLRRepresentationItem.

Param pppHLRRepItem:

[out] HLR curve result grouped by A3DRiRepresentationItem entity. pppHLRRepItem is automatically allocated by A3DComputeOrthoHLROnModelFile.

Retval A3D_SUCCESS:

Retval A3D_INVALID_DATA_STRUCT_NULL:

Retval A3D_INVALID_DATA_STRUCT_SIZE:

Retval A3D_INVALID_ENTITY_TYPE:

Retval A3D_INVALID_DATA:

Retval A3D_ERROR:

Retval A3D_TOOLS_INVALID_SECTION_PLANE:

Retval A3D_INCOMPATIBLE_FUNCTION_WITH_KEEP_PARSED_ENTITY_MODE:

Return:

A3D_SUCCESS on success, or an error code on failure

Retval A3D_SUCCESS:

Retval A3D_ERROR:

if not on Linux

Return:

A3D_SUCCESS on success, or an error code on failure

Retval A3D_INITIALIZE_NOT_CALLED:

Retval A3D_INVALID_DATA_STRUCT_SIZE:

Retval A3D_INVALID_DATA_STRUCT_NULL:

Retval A3D_INVALID_ENTITY_NULL:

Retval A3D_INVALID_ENTITY_TYPE:

Retval A3D_SUCCESS:

Retval A3D_INITIALIZE_NOT_CALLED:

Retval A3D_INVALID_DATA_STRUCT_SIZE:

Retval A3D_INVALID_DATA_STRUCT_NULL:

Retval A3D_INVALID_ENTITY_NULL:

Retval A3D_INVALID_ENTITY_TYPE:

Retval A3D_SUCCESS:

Retval A3D_INITIALIZE_NOT_CALLED:

Retval A3D_INVALID_DATA_STRUCT_SIZE:

Retval A3D_INVALID_DATA_STRUCT_NULL:

Retval A3D_INVALID_ENTITY_NULL:

Retval A3D_INVALID_ENTITY_TYPE:

Retval A3D_SUCCESS:

Return:

A3D_SUCCESS on success, or an error code on failure

Return:

A3D_SUCCESS on success, or an error code on failure

Return:

A3D_SUCCESS on success, or an error code on failure

Retval A3D_INITIALIZE_NOT_CALLED:

Retval A3D_INVALID_DATA_STRUCT_SIZE:

Retval A3D_INVALID_DATA_STRUCT_NULL:

Retval A3D_INVALID_ENTITY_NULL:

Retval A3D_INVALID_ENTITY_TYPE:

Retval A3D_SUCCESS:

Return:

A3D_SUCCESS on success, or an error code on failure

Retval A3D_ERROR:

Retval A3D_SUCCESS:

Return:

A3D_SUCCESS on success, or an error code on failure

Retval A3D_ERROR:

Retval A3D_SUCCESS:

Return:

A3D_SUCCESS on success, or an error code on failure

Function Documentation

A3DStatus A3DCrvGetInterval(const A3DCrvBase *pCrv, A3DIntervalData *pInterval)

Function to get a curve parametric interval.

Return values:

A3D_SUCCESS

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DCrvEvaluate(const A3DCrvBase *pCrv, A3DDouble dParameter, A3DUns32 uiNbDerivatives, A3DVector3dData *pPointAndDerivatives)

Function to evaluate a point and the derivatives of a curve at a parameter.

Derivatives are stored in the following order:

           \li  With uiNbDerivatives = 0: Point
           \li  With uiNbDerivatives = 1: Point, First Derivative
           \li  With uiNbDerivatives = 2: Point, First Derivative, Second Derivative
pPointAndDerivatives size must be equal to (uiNbDerivatives+1):
  • size = 1 if uiNbDerivatives=0

  • size = 2 if uiNbDerivatives=1;

  • size = 3 if uiNbDerivatives=2;

Version

4.0

Warning

The number of derivatives must be less than or equal to 2.

Return values:
  • A3D_SUCCESS

  • A3D_ERROR

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DCrvEvaluatePointAndNormal(A3DCrvBase const *psCrv, A3DDouble dParameter, A3DUns32 uiNbSurfaces, A3DSurfBase **ppsSurfaces, A3DUns32 uiNbDerivatives, A3DVector3dData *psPointAndDerivatives, A3DVector3dData *psNormal)

Function to evaluate a point and the derivatives of a curve at a parameter, then the normal of this point to each of the given surfaces.

Derivatives are stored in the following order:

            \li  With uiNbDerivatives = 0: Point
            \li  With uiNbDerivatives = 1: Point, First Derivative
            \li  With uiNbDerivatives = 2: Point, First Derivative, Second Derivative
psPointAndDerivatives size must be equal to (uiNbDerivatives+1):
  • size = 1 if uiNbDerivatives=0

  • size = 2 if uiNbDerivatives=1;

  • size = 3 if uiNbDerivatives=2; psNormal size must be equal to the uiNbSurfaces, the number of given surfaces. Life time of psPointAndDerivatives and psNormal must be handled by the user.

Version

8.2

Warning

The number of derivatives must be less than or equal to 2.

Return values:
  • A3D_SUCCESS

  • A3D_ERROR

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DCrvIsPeriodic(const A3DCrvBase *pCrv, A3DBool *pbIsPeriodic)

Function to determine if a curve is periodic.

Version

10.1

Parameters:
  • pCrv[in] The input curve.

  • pbIsPeriodic[out] The returned value.

Return values:
  • A3D_SUCCESS

  • A3D_ERROR

  • A3D_INVALID_ENTITY_NULL

  • A3D_INVALID_ENTITY_TYPE

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DSurfGetDomain(const A3DSurfBase *pSrf, A3DDomainData *pDomain)

Function to get a surface parametric domain.

Return values:

A3D_SUCCESS

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DSurfEvaluate(const A3DSurfBase *pSurf, const A3DVector2dData *pUVParameter, A3DUns32 uiNbDerivatives, A3DVector3dData *pPointAndDerivatives)

Evaluate a point and its derivative on a surface.

This function evaluates the point and its derivatives (1st and 2nd) on the surface pSurf given the pUVParameter coordinates.

Version

4.0

Reading the Result

If the function successfully evaluates pUVParameter on pSurf, the memory at pPointAndDerivatives is filled with a row-major 2D array representing the derivatives in the order of u and v.

u

v

Content

Description

uiNbDerivatives

0

0

Point

The evaluated point at pUVParameter

0

1

V

First derivative with respect to v

>= 1

0

2

V2

Second derivative with respect to v

== 2

1

0

U

First derivative with respect to u

>= 1

1

1

UV

Mixed first derivates (u and v)

== 2

1

2

U2

Second derivative with respect to u

== 2

To retrieve the value in the table given the partial derivative orders u and v use: pPointAndDerivatives[u * (uiNbDerivatives+1) + v]

When uiNbDerivatives is 0, the table contains a single element:

0

0

Point

When uiNbDerivatives is 1, the array has 2 rows and 2 columns:

0

1

0

Point

V

1

U

When uiNbDerivatives is 2, the table has 3 rows and 3 columns:

0

1

2

0

Point

V

V2

1

U

UV

2

U2

Memory Layout

As a 2D array expressed in a C-style array, the memory layout for pPointAndDerivatives depends on the value of uiNbDerivatives:

The memory layout for pPointAndDerivatives is as follows:

uiNbDerivatives

0

1

2

3

4

5

6

7

8

0

Point

1

Point

V

U

2

Point

V

V2

U

UV

U2

The values left blank in this table correspond to uninitialized data. Dereferencing them is unsupported behavior.

Memory Management

The pointer pPointAndDerivatives must reference an already initialized array of A3DVector3dData. The allocated memory should be sufficient to store all results, and the required size depends on the value of uiNbDerivatives:

  • uiNbDerivates = 0: 1 element.

  • uiNbDerivates = 1: 4 elements.

  • uiNbDerivates = 2: 9 elements.

In general, pPointAndDerivatives must point to an allocated memory of sizeof(A3DVector3dData * (uiNbDerivates + 1) * (uiNbDerivates + 1)).

A3DSurfEvaluate does not perform bound checking. Therefore, it is the caller’s responsibility to ensure that the allocated memory is sufficient.

Parameters:
  • pSurf – The surface on which the point will be evaluated.

  • pUVParameter – The coordinates of the point to evaluate, expressed in UV parameeters on pSurf.

  • uiNbDerivatives – The number of derivatives to evaluate. This value cannot exceed 2.

  • pPointAndDerivatives – The resulting evaluation, stored in this pointer.

Return values:
  • A3D_SUCCESS

  • A3D_ERROR – if uiNbDerivatives > 2

  • A3D_ERROR – if pSurf is 0

  • A3D_ERROR – if pUVParameter is 0

  • A3D_ERROR – if pPointAndDerivatives is 0

  • A3D_ERROR – if evaluation is not possible.

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DSurfIsDegenerated(const A3DSurfBase *pSurf, const A3DVector2dData *pUVParameter, A3DDouble dTolerance, A3DBool *pbIsDegenerated, A3DBool *pbUDirection)

Function to determine if a surface is degenerated at a point.

Version

9.0

Parameters:
  • pSurf[in] The input surface.

  • pUVParameter[in] The coordinates of the point.

  • dTolerance[in] The tolerance of the test.

  • pbIsDegenerated[out] The returned value.

  • pbUDirection[out] The direction of the degeneracy if a degeneracy is detected (true = U direction, and false = V direction).

Return values:
  • A3D_SUCCESS

  • A3D_ERROR

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DSurfIsPeriodic(const A3DSurfBase *pSrf, A3DBool *pbUIsPeriodic, A3DBool *pbVIsPeriodic)

Function to determine if a surface is periodic.

Version

10.1

Parameters:
  • pSrf[in] The input surface.

  • pbUIsPeriodic[out] The returned value for u direction.

  • pbVIsPeriodic[out] The returned value for v direction.

Return values:
  • A3D_SUCCESS

  • A3D_ERROR

  • A3D_INVALID_ENTITY_NULL

  • A3D_INVALID_ENTITY_TYPE

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DSurfIsG1Continuous(const A3DSurfBase *pSurf, const A3DVector2dData *pUVParameter, A3DDouble dAngleTolerance, A3DBool *pbUG1Continuous, A3DBool *pbVG1Continuous)

Function to determine if a surface is G1 discontinuous at a point.

Version

9.0

Parameters:
  • pSurf[in] The input surface.

  • pUVParameter[in] The coordinates of the point.

  • dAngleTolerance[in] The derivative angle tolerance.

  • pbUG1Continuous[out] The returned value for u direction.

  • pbVG1Continuous[out] The returned value for v direction.

Return values:
  • A3D_SUCCESS

  • A3D_ERROR

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DSimplifyCurveWithAnalytics(const A3DCrvBase *pCurve, A3DDouble dTol, A3DUns32 uNbRecognizedType, A3DEEntityType const *pOptRecognizedType, A3DCrvBase **pAnalyticCurve, A3DEAnalyticType *peAnalyticType)

Function to get curves as analytic (line or circle) according to a certain tolerance.

Use A3DEntityDelete to delete the analytic curve after using it. Recognized curve type are: Linear Curve Circular Curve If uNbRecognizedType and pOptRecognizedType are defined, A3DSimplifyCurveWithAnalytics recognizes only given types.

Version

7.0

Warning

must be deleted by the user.

Parameters:
  • pCurve[inout] The input curve.

  • dTol[in] The tolerance.

  • uNbRecognizedType[in] Size of array pOptRecognizedType.

  • pOptRecognizedType[in] Optional type of curve we want to recognize.

  • pAnalyticCurve[out] The new analytic curve.

  • peAnalyticType[out] The type of analytic curve.

Return values:
  • A3D_SUCCESS – if an analytic has been created

  • A3D_ERROR

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DSimplifyCurveWithAnalyticsFromCoEdge(const A3DTopoCoEdge *pCoEdge, A3DDouble dTol, A3DUns32 uNbRecognizedType, A3DEEntityType const *pOptRecognizedType, A3DCrvBase **pAnalyticCurve, A3DEAnalyticType *peAnalyticType)

Function to get curves as analytic (line or circle) according to a certain tolerance Try to use 3D curves from Edges if exist, otherwise use UV Curves on CoEdge.

Use A3DEntityDelete to delete the analytic curve after using it. Recognize curve type are: Linear Curve Circular Curve If uNbRecognizedType and pOptRecognizedType are defined, A3DSimplifyCurveWithAnalytics recognizes only given types.

Version

7.0

Warning

must be deleted by the user.

Parameters:
  • pCoEdge[in] The input coEdge.

  • dTol[in] The tolerance.

  • uNbRecognizedType[in] Size of array pOptRecognizedType.

  • pOptRecognizedType[in] Optional type of curve we want to recognize.

  • pAnalyticCurve[out] The new analytic curve.

  • peAnalyticType[out] The type of analytic curve.

Return values:
  • A3D_SUCCESS – if an analytic has been created

  • A3D_ERROR

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DSimplifySurfaceWithAnalytics(A3DSurfBase const *pSrf, A3DDouble dTol, A3DUns32 uNbRecognizedType, A3DEEntityType const *pOptRecognizedType, A3DSurfBase **pAnalyticSurface, A3DEAnalyticType *peAnalyticType)

Function to get surface as analytic according to a certain tolerance.

Use A3DEntityDelete to delete the analytic surface after using it. Recognized surface type are Conic Surface Cylindrical Surface Plane Surface Spherical Surface Toric Surface If uNbRecognizedType and pOptRecognizedType are defined, A3DSimplifySurfaceWithAnalytics recognizes only given types.

Version

7.0

Warning

must be deleted by the user.

Parameters:
  • pSrf[in] The input surface.

  • dTol[in] Tolerance.

  • uNbRecognizedType[in] Size of array pOptRecognizedType.

  • pOptRecognizedType[in] Optional type of surface we want to recognize.

  • pAnalyticSurface[out] The new analytic surface.

  • peAnalyticType[out] The type of analytic surface.

Return values:
  • A3D_SUCCESS

  • A3D_INVALID_ENTITY_NULL

  • A3D_INVALID_ENTITY_TYPE

  • A3D_ERROR

Returns:

A3D_SUCCESS on success, or an error code on failure

A3DStatus A3DSurfEvaluateNormal(const A3DSurfBase *pSurf, const A3DVector2dData *pUVParameter, A3DVector3dData *pNormal)

Function to evaluate a normal on a surface.

Parameters:
  • pSurf[in] The input surface.

  • pUVParameter[in] The input UV point to evaluate the normal of the surface.

  • pNormal[out] The normal of the surface at the UV parameter.

Return values:
  • A3D_SUCCESS

  • A3D_INVALID_DATA_STRUCT_NULL

  • A3D_INVALID_DATA_STRUCT_SIZE

  • A3D_INVALID_ENTITY_TYPE

  • A3D_ERROR

Returns:

A3D_SUCCESS on success, or an error code on failure