
############################
A3DCrvEvaluatePointAndNormal
############################

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

   .. rst-class:: sig-pretty-signature
   
      | :c:enum:`~A3DStatus` A3DCrvEvaluatePointAndNormal(:c:type:`~A3DCrvBase`\ \* **psCrv**\ , :c:type:`~A3DDouble` **dParameter**\ , :c:type:`~A3DUns32` **uiNbSurfaces**\ , :c:type:`~A3DSurfBase`\ \*\* **ppsSurfaces**\ , :c:type:`~A3DUns32` **uiNbDerivatives**\ , :c:struct:`~A3DVector3dData`\ \* **psPointAndDerivatives**\ , :c:struct:`~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.
   
   
      8.2
   
   
   
      The number of derivatives must be less than or equal to 2.
   
   
   
   **Returns**
   
   
      ``A3D_SUCCESS``\ on success, or an error code on failure
   
   




