1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332
|
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to
// this header file considered to be the "object code" form of the original source.
#ifndef _Geom_SurfaceOfRevolution_HeaderFile
#define _Geom_SurfaceOfRevolution_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineHandle.hxx>
#include <Handle_Geom_SurfaceOfRevolution.hxx>
#include <gp_Pnt.hxx>
#include <Geom_SweptSurface.hxx>
#include <Handle_Geom_Curve.hxx>
#include <Standard_Real.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Integer.hxx>
#include <Handle_Geom_Geometry.hxx>
class Standard_ConstructionError;
class Standard_RangeError;
class Geom_UndefinedDerivative;
class Geom_Curve;
class gp_Ax1;
class gp_Dir;
class gp_Pnt;
class gp_Ax2;
class gp_Trsf;
class gp_GTrsf2d;
class gp_Vec;
class Geom_Geometry;
//! Describes a surface of revolution (revolved surface).
//! Such a surface is obtained by rotating a curve (called
//! the "meridian") through a complete revolution about
//! an axis (referred to as the "axis of revolution"). The
//! curve and the axis must be in the same plane (the
//! "reference plane" of the surface).
//! Rotation around the axis of revolution in the
//! trigonometric sense defines the u parametric
//! direction. So the u parameter is an angle, and its
//! origin is given by the position of the meridian on the surface.
//! The parametric range for the u parameter is: [ 0, 2.*Pi ]
//! The v parameter is that of the meridian.
//! Note: A surface of revolution is built from a copy of the
//! original meridian. As a result the original meridian is
//! not modified when the surface is modified.
//! The form of a surface of revolution is typically a
//! general revolution surface
//! (GeomAbs_RevolutionForm). It can be:
//! - a conical surface, if the meridian is a line or a
//! trimmed line (GeomAbs_ConicalForm),
//! - a cylindrical surface, if the meridian is a line or a
//! trimmed line parallel to the axis of revolution
//! (GeomAbs_CylindricalForm),
//! - a planar surface if the meridian is a line or a
//! trimmed line perpendicular to the axis of revolution
//! of the surface (GeomAbs_PlanarForm),
//! - a toroidal surface, if the meridian is a circle or a
//! trimmed circle (GeomAbs_ToroidalForm), or
//! - a spherical surface, if the meridian is a circle, the
//! center of which is located on the axis of the
//! revolved surface (GeomAbs_SphericalForm).
//! Warning
//! Be careful not to construct a surface of revolution
//! where the curve and the axis or revolution are not
//! defined in the same plane. If you do not have a
//! correct configuration, you can correct your initial
//! curve, using a cylindrical projection in the reference plane.
class Geom_SurfaceOfRevolution : public Geom_SweptSurface
{
public:
//! C : is the meridian or the referenced curve.
//! A1 is the axis of revolution.
//! The form of a SurfaceOfRevolution can be :
//! . a general revolution surface (RevolutionForm),
//! . a conical surface if the meridian is a line or a trimmed line
//! (ConicalForm),
//! . a cylindrical surface if the meridian is a line or a trimmed
//! line parallel to the revolution axis (CylindricalForm),
//! . a planar surface if the meridian is a line perpendicular to
//! the revolution axis of the surface (PlanarForm).
//! . a spherical surface,
//! . a toroidal surface,
//! . a quadric surface.
//! Warnings :
//! It is not checked that the curve C is planar and that the
//! surface axis is in the plane of the curve.
//! It is not checked that the revolved curve C doesn't
//! self-intersects.
Standard_EXPORT Geom_SurfaceOfRevolution(const Handle(Geom_Curve)& C, const gp_Ax1& A1);
//! Changes the axis of revolution.
//! Warnings :
//! It is not checked that the axis is in the plane of the
//! revolved curve.
Standard_EXPORT void SetAxis (const gp_Ax1& A1) ;
//! Changes the direction of the revolution axis.
//! Warnings :
//! It is not checked that the axis is in the plane of the
//! revolved curve.
Standard_EXPORT void SetDirection (const gp_Dir& V) ;
//! Changes the revolved curve of the surface.
//! Warnings :
//! It is not checked that the curve C is planar and that the
//! surface axis is in the plane of the curve.
//! It is not checked that the revolved curve C doesn't
//! self-intersects.
Standard_EXPORT void SetBasisCurve (const Handle(Geom_Curve)& C) ;
//! Changes the location point of the revolution axis.
//! Warnings :
//! It is not checked that the axis is in the plane of the
//! revolved curve.
Standard_EXPORT void SetLocation (const gp_Pnt& P) ;
//! Returns the revolution axis of the surface.
Standard_EXPORT gp_Ax1 Axis() const;
//! Returns the location point of the axis of revolution.
Standard_EXPORT const gp_Pnt& Location() const;
//! Computes the position of the reference plane of the surface
//! defined by the basis curve and the symmetry axis.
//! The location point is the location point of the revolution's
//! axis, the XDirection of the plane is given by the revolution's
//! axis and the orientation of the normal to the plane is given
//! by the sense of revolution.
//!
//! Raised if the revolved curve is not planar or if the revolved
//! curve and the symmetry axis are not in the same plane or if
//! the maximum of distance between the axis and the revolved
//! curve is lower or equal to Resolution from gp.
Standard_EXPORT gp_Ax2 ReferencePlane() const;
//! Changes the orientation of this surface of revolution
//! in the u parametric direction. The bounds of the
//! surface are not changed but the given parametric
//! direction is reversed. Hence the orientation of the
//! surface is reversed.
//! As a consequence:
//! - UReverse reverses the direction of the axis of
//! revolution of this surface,
Standard_EXPORT void UReverse() ;
//! Computes the u parameter on the modified
//! surface, when reversing its u parametric
//! direction, for any point of u parameter U on this surface of revolution.
//! In the case of a revolved surface:
//! - UReversedParameter returns 2.*Pi - U
Standard_EXPORT Standard_Real UReversedParameter (const Standard_Real U) const;
//! Changes the orientation of this surface of revolution
//! in the v parametric direction. The bounds of the
//! surface are not changed but the given parametric
//! direction is reversed. Hence the orientation of the
//! surface is reversed.
//! As a consequence:
//! - VReverse reverses the meridian of this surface of revolution.
Standard_EXPORT void VReverse() ;
//! Computes the v parameter on the modified
//! surface, when reversing its v parametric
//! direction, for any point of v parameter V on this surface of revolution.
//! In the case of a revolved surface:
//! - VReversedParameter returns the reversed
//! parameter given by the function
//! ReversedParameter called with V on the meridian.
Standard_EXPORT Standard_Real VReversedParameter (const Standard_Real V) const;
//! Computes the parameters on the transformed surface for
//! the transform of the point of parameters U,V on <me>.
//!
//! me->Transformed(T)->Value(U',V')
//!
//! is the same point as
//!
//! me->Value(U,V).Transformed(T)
//!
//! Where U',V' are the new values of U,V after calling
//!
//! me->TranformParameters(U,V,T)
//!
//! This methods multiplies V by
//! BasisCurve()->ParametricTransformation(T)
Standard_EXPORT virtual void TransformParameters (Standard_Real& U, Standard_Real& V, const gp_Trsf& T) const;
//! Returns a 2d transformation used to find the new
//! parameters of a point on the transformed surface.
//!
//! me->Transformed(T)->Value(U',V')
//!
//! is the same point as
//!
//! me->Value(U,V).Transformed(T)
//!
//! Where U',V' are obtained by transforming U,V with
//! th 2d transformation returned by
//!
//! me->ParametricTransformation(T)
//!
//! This methods returns a scale centered on the
//! U axis with BasisCurve()->ParametricTransformation(T)
Standard_EXPORT virtual gp_GTrsf2d ParametricTransformation (const gp_Trsf& T) const;
//! Returns the parametric bounds U1, U2 , V1 and V2 of this surface.
//! A surface of revolution is always complete, so U1 = 0, U2 = 2*PI.
Standard_EXPORT void Bounds (Standard_Real& U1, Standard_Real& U2, Standard_Real& V1, Standard_Real& V2) const;
//! IsUClosed always returns true.
Standard_EXPORT Standard_Boolean IsUClosed() const;
//! IsVClosed returns true if the meridian of this
//! surface of revolution is closed.
Standard_EXPORT Standard_Boolean IsVClosed() const;
//! IsCNu always returns true.
Standard_EXPORT Standard_Boolean IsCNu (const Standard_Integer N) const;
//! IsCNv returns true if the degree of continuity of the
//! meridian of this surface of revolution is at least N.
//! Raised if N < 0.
Standard_EXPORT Standard_Boolean IsCNv (const Standard_Integer N) const;
//! Returns True.
Standard_EXPORT Standard_Boolean IsUPeriodic() const;
//! IsVPeriodic returns true if the meridian of this
//! surface of revolution is periodic.
Standard_EXPORT Standard_Boolean IsVPeriodic() const;
//! Computes the U isoparametric curve of this surface
//! of revolution. It is the curve obtained by rotating the
//! meridian through an angle U about the axis of revolution.
Standard_EXPORT Handle(Geom_Curve) UIso (const Standard_Real U) const;
//! Computes the U isoparametric curve of this surface
//! of revolution. It is the curve obtained by rotating the
//! meridian through an angle U about the axis of revolution.
Standard_EXPORT Handle(Geom_Curve) VIso (const Standard_Real V) const;
//! Computes the point P (U, V) on the surface.
//! U is the angle of the rotation around the revolution axis.
//! The direction of this axis gives the sense of rotation.
//! V is the parameter of the revolved curve.
Standard_EXPORT void D0 (const Standard_Real U, const Standard_Real V, gp_Pnt& P) const;
//! Computes the current point and the first derivatives
//! in the directions U and V.
//! Raised if the continuity of the surface is not C1.
Standard_EXPORT void D1 (const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V) const;
//! Computes the current point, the first and the second derivatives
//! in the directions U and V.
//! Raised if the continuity of the surface is not C2.
Standard_EXPORT void D2 (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) const;
//! Computes the current point, the first,the second and the third
//! derivatives in the directions U and V.
//! Raised if the continuity of the surface is not C3.
Standard_EXPORT 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;
//! Computes the derivative of order Nu in the direction u and
//! Nv in the direction v.
//!
//! Raised if the continuity of the surface is not CNu in the u
//! direction and CNv in the v direction.
//! Raised if Nu + Nv < 1 or Nu < 0 or Nv < 0.
//! The following functions evaluates the local
//! derivatives on surface. Useful to manage discontinuities
//! on the surface.
//! if Side = 1 -> P = S( U+,V )
//! if Side = -1 -> P = S( U-,V )
//! else P is betveen discontinuities
//! can be evaluated using methods of
//! global evaluations P = S( U ,V )
Standard_EXPORT gp_Vec DN (const Standard_Real U, const Standard_Real V, const Standard_Integer Nu, const Standard_Integer Nv) const;
Standard_EXPORT void LocalD0 (const Standard_Real U, const Standard_Real V, const Standard_Integer USide, gp_Pnt& P) const;
Standard_EXPORT void LocalD1 (const Standard_Real U, const Standard_Real V, const Standard_Integer USide, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V) const;
Standard_EXPORT void LocalD2 (const Standard_Real U, const Standard_Real V, const Standard_Integer USide, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV) const;
Standard_EXPORT void LocalD3 (const Standard_Real U, const Standard_Real V, const Standard_Integer USide, 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;
Standard_EXPORT gp_Vec LocalDN (const Standard_Real U, const Standard_Real V, const Standard_Integer USide, const Standard_Integer Nu, const Standard_Integer Nv) const;
//! Applies the transformation T to this surface of revolution.
Standard_EXPORT void Transform (const gp_Trsf& T) ;
//! Creates a new object which is a copy of this surface of revolution.
Standard_EXPORT Handle(Geom_Geometry) Copy() const;
DEFINE_STANDARD_RTTI(Geom_SurfaceOfRevolution)
protected:
private:
gp_Pnt loc;
};
#endif // _Geom_SurfaceOfRevolution_HeaderFile
|