
###################
A3DSurfProjectPoint
###################

.. c:function:: A3DStatus A3DSurfProjectPoint(const A3DSurfBase *pSurf, const A3DVector3dData *pPointToProject, A3DUns32 *puiNbSolutions, A3DVector2dData **ppdSolutionParameters, A3DDouble **ppdSolutionDistance)

   .. rst-class:: sig-pretty-signature
   
      | :c:enum:`~A3DStatus` A3DSurfProjectPoint(*const* :c:type:`~A3DSurfBase`\ \* **pSurf**\ , *const* :c:struct:`~A3DVector3dData`\ \* **pPointToProject**\ , :c:type:`~A3DUns32`\ \* **puiNbSolutions**\ , :c:struct:`~A3DVector2dData`\ \*\* **ppdSolutionParameters**\ , :c:type:`~A3DDouble`\ \*\* **ppdSolutionDistance**\ )
   
   This function projects a point on a surface The number of returned solutions is given by puiNbSolutions and for each one, ppdSolutionParameters and ppdSolutionDistance arrays give the 2D point in surface parametric domain and the spatial distance between pPointToProject and the solution (on the surface).
   
   **Parameters**
   
   
      **pSurf**\ : The input surface.
   
      **pPointToProject**\ : The input point to project on surface.
   
      **puiNbSolutions**\ : The number of returned solutions.
   
      **ppdSolutionParameters**\ : Array of 2D points in the surface parametric domain.
   
      **ppdSolutionDistance**\ : Array of spatial distances between pPointToProject and the solution (on the surface).
   
   
   **Returns**
   
   
      ``A3D_SUCCESS``\ on success, or an error code on failure
   
   




