0032837: Documentation, Geom_Surface - add references to GeomLib::NormEstim() for...
[occt.git] / src / Geom / Geom_Surface.hxx
index 05432d7..f117172 100644 (file)
@@ -27,29 +27,24 @@ class gp_Vec;
 class Geom_Surface;
 DEFINE_STANDARD_HANDLE(Geom_Surface, Geom_Geometry)
 
-//! Describes the common behavior of surfaces in 3D
-//! space. The Geom package provides many
-//! implementations of concrete derived surfaces, such as
-//! planes, cylinders, cones, spheres and tori, surfaces of
-//! linear extrusion, surfaces of revolution, Bezier and
-//! BSpline surfaces, and so on.
-//! The key characteristic of these surfaces is that they
-//! are parameterized. Geom_Surface demonstrates:
-//! - how to work with the parametric equation of a
-//! surface to compute the point of parameters (u,
-//! v), and, at this point, the 1st, 2nd ... Nth derivative,
+//! Describes the common behavior of surfaces in 3D space.
+//! The Geom package provides many implementations of concrete derived surfaces,
+//! such as planes, cylinders, cones, spheres and tori, surfaces of linear extrusion,
+//! surfaces of revolution, Bezier and BSpline surfaces, and so on.
+//! The key characteristic of these surfaces is that they are parameterized.
+//! Geom_Surface demonstrates:
+//! - how to work with the parametric equation of a surface
+//!   to compute the point of parameters (u, v), and, at this point, the 1st, 2nd ... Nth derivative;
 //! - how to find global information about a surface in
-//! each parametric direction (for example, level of
-//! continuity, whether the surface is closed, its
-//! periodicity, the bounds of the parameters and so on), and
-//! - how the parameters change when geometric
-//! transformations are applied to the surface, or the
-//! orientation is modified.
-//! Note that all surfaces must have a geometric
-//! continuity, and any surface is at least "C0". Generally,
-//! continuity is checked at construction time or when the
-//! curve is edited. Where this is not the case, the
-//! documentation makes this explicit.
+//!   each parametric direction (for example, level of continuity, whether the surface is closed,
+//!   its periodicity, the bounds of the parameters and so on);
+//! - how the parameters change when geometric transformations are applied to the surface,
+//!   or the orientation is modified.
+//!
+//! Note that all surfaces must have a geometric continuity, and any surface is at least "C0".
+//! Generally, continuity is checked at construction time or when the curve is edited.
+//! Where this is not the case, the documentation makes this explicit.
+//!
 //! Warning
 //! The Geom package does not prevent the construction of
 //! surfaces with null areas, or surfaces which self-intersect.
@@ -142,47 +137,42 @@ public:
   //! equal to Precision::Infinite: instead of Standard_Real::LastReal.
   Standard_EXPORT virtual void Bounds (Standard_Real& U1, Standard_Real& U2, Standard_Real& V1, Standard_Real& V2) const = 0;
 
-  //! Checks whether this surface is closed in the u
-  //! parametric direction.
-  //! Returns true if, in the u parametric direction: taking
-  //! uFirst and uLast as the parametric bounds in
-  //! the u parametric direction, for each parameter v, the
-  //! distance between the points P(uFirst, v) and
+  //! Checks whether this surface is closed in the u parametric direction.
+  //! Returns true if, in the u parametric direction:
+  //! taking uFirst and uLast as the parametric bounds in
+  //! the u parametric direction, for each parameter v,
+  //! the distance between the points P(uFirst, v) and
   //! P(uLast, v) is less than or equal to gp::Resolution().
   Standard_EXPORT virtual Standard_Boolean IsUClosed() const = 0;
 
-  //! Checks whether this surface is closed in the u
-  //! parametric direction.
-  //! Returns true if, in the v parametric
-  //! direction: taking vFirst and vLast as the
-  //! parametric bounds in the v parametric direction, for
-  //! each parameter u, the distance between the points
-  //! P(u, vFirst) and P(u, vLast) is less than
-  //! or equal to gp::Resolution().
+  //! Checks whether this surface is closed in the u parametric direction.
+  //! Returns true if, in the v parametric direction:
+  //! taking vFirst and vLast as the parametric bounds in the v parametric direction,
+  //! for each parameter u, the distance between the points
+  //! P(u, vFirst) and P(u, vLast) is less than or equal to gp::Resolution().
   Standard_EXPORT virtual Standard_Boolean IsVClosed() const = 0;
 
-  //! Checks if this surface is periodic in the u
-  //! parametric direction. Returns true if:
+  //! Checks if this surface is periodic in the u parametric direction.
+  //! Returns true if:
   //! - this surface is closed in the u parametric direction, and
   //! - there is a constant T such that the distance
-  //! between the points P (u, v) and P (u + T,
-  //! v) (or the points P (u, v) and P (u, v +
-  //! T)) is less than or equal to gp::Resolution().
+  //!   between the points P (u, v) and P (u + T, v)
+  //!   (or the points P (u, v) and P (u, v + T)) is less than or equal to gp::Resolution().
+  //!
   //! Note: T is the parametric period in the u parametric direction.
   Standard_EXPORT virtual Standard_Boolean IsUPeriodic() const = 0;
 
-  //! Returns the period of this surface in the u
-  //! parametric direction.
-  //! raises if the surface is not uperiodic.
+  //! Returns the period of this surface in the u parametric direction.
+  //! Raises if the surface is not uperiodic.
   Standard_EXPORT virtual Standard_Real UPeriod() const;
 
-  //! Checks if this surface is periodic in the v
-  //! parametric direction. Returns true if:
+  //! Checks if this surface is periodic in the v parametric direction.
+  //! Returns true if:
   //! - this surface is closed in the v parametric direction, and
   //! - there is a constant T such that the distance
-  //! between the points P (u, v) and P (u + T,
-  //! v) (or the points P (u, v) and P (u, v +
-  //! T)) is less than or equal to gp::Resolution().
+  //!   between the points P (u, v) and P (u + T, v)
+  //!   (or the points P (u, v) and P (u, v + T)) is less than or equal to gp::Resolution().
+  //!
   //! Note: T is the parametric period in the v parametric direction.
   Standard_EXPORT virtual Standard_Boolean IsVPeriodic() const = 0;
 
@@ -197,25 +187,24 @@ public:
   Standard_EXPORT virtual Handle(Geom_Curve) VIso (const Standard_Real V) const = 0;
 
   //! Returns the Global Continuity of the surface in direction U and V :
-  //! C0 : only geometric continuity,
-  //! C1 : continuity of the first derivative all along the surface,
-  //! C2 : continuity of the second derivative all along the surface,
-  //! C3 : continuity of the third derivative all along the surface,
-  //! G1 : tangency continuity all along the surface,
-  //! G2 : curvature continuity all along the surface,
-  //! CN : the order of continuity is infinite.
-  //! Example :
+  //! - C0: only geometric continuity,
+  //! - C1: continuity of the first derivative all along the surface,
+  //! - C2: continuity of the second derivative all along the surface,
+  //! - C3: continuity of the third derivative all along the surface,
+  //! - G1: tangency continuity all along the surface,
+  //! - G2: curvature continuity all along the surface,
+  //! - CN: the order of continuity is infinite.
+  //!
+  //! Example:
   //! If the surface is C1 in the V parametric direction and C2
   //! in the U parametric direction Shape = C1.
   Standard_EXPORT virtual GeomAbs_Shape Continuity() const = 0;
 
-  //! Returns the order of continuity of the surface in the
-  //! U parametric direction.
+  //! Returns the order of continuity of the surface in the U parametric direction.
   //! Raised if N < 0.
   Standard_EXPORT virtual Standard_Boolean IsCNu (const Standard_Integer N) const = 0;
 
-  //! Returns the order of continuity of the surface in the
-  //! V parametric direction.
+  //! Returns the order of continuity of the surface in the V parametric direction.
   //! Raised if N < 0.
   Standard_EXPORT virtual Standard_Boolean IsCNv (const Standard_Integer N) const = 0;
 
@@ -226,9 +215,10 @@ public:
   Standard_EXPORT virtual void D0 (const Standard_Real U, const Standard_Real V, gp_Pnt& P) const = 0;
 
 
-  //! Computes the point P and the first derivatives in the
-  //! directions U and V at this point.
+  //! Computes the point P and the first derivatives in the directions U and V at this point.
   //! Raised if the continuity of the surface is not C1.
+  //!
+  //! Tip: use GeomLib::NormEstim() to calculate surface normal at specified (U, V) point.
   Standard_EXPORT virtual void D1 (const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V) const = 0;
 
   //! Computes the point P, the first and the second derivatives in
@@ -241,21 +231,18 @@ public:
   //! Raised if the continuity of the surface is not C2.
   Standard_EXPORT virtual void D3 (const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV, gp_Vec& D3U, gp_Vec& D3V, gp_Vec& D3UUV, gp_Vec& D3UVV) const = 0;
 
-  //! ---Purpose ;
-  //! Computes the derivative of order Nu in the direction U and Nv
-  //! in the direction V at the point P(U, V).
+  //! Computes the derivative of order Nu in the direction U and Nv in the direction V at the point P(U, V).
   //!
-  //! Raised if the continuity of the surface is not CNu in the U
-  //! direction or not CNv in the V direction.
+  //! Raised if the continuity of the surface is not CNu in the U direction or not CNv in the V direction.
   //! Raised if Nu + Nv < 1 or Nu < 0 or Nv < 0.
   Standard_EXPORT virtual gp_Vec DN (const Standard_Real U, const Standard_Real V, const Standard_Integer Nu, const Standard_Integer Nv) const = 0;
 
-  //! Computes the point of parameter U on the surface.
+  //! Computes the point of parameter (U, V) on the surface.
   //!
-  //! It is implemented with D0
+  //! It is implemented with D0.
+  //! Tip: use GeomLib::NormEstim() to calculate surface normal at specified (U, V) point.
   //!
-  //! Raised only for an "OffsetSurface" if it is not possible to
-  //! compute the current point.
+  //! Raised only for an "OffsetSurface" if it is not possible to compute the current point.
   Standard_EXPORT gp_Pnt Value (const Standard_Real U, const Standard_Real V) const;
 
   //! Dumps the content of me into the stream