Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/opencascade/Geom_Geometry.hxx was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // Created on: 1993-03-09
0002 // Created by: JVC
0003 // Copyright (c) 1993-1999 Matra Datavision
0004 // Copyright (c) 1999-2014 OPEN CASCADE SAS
0005 //
0006 // This file is part of Open CASCADE Technology software library.
0007 //
0008 // This library is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU Lesser General Public License version 2.1 as published
0010 // by the Free Software Foundation, with special exception defined in the file
0011 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0012 // distribution for complete text of the license and disclaimer of any warranty.
0013 //
0014 // Alternatively, this file may be used under the terms of Open CASCADE
0015 // commercial license or contractual agreement.
0016 
0017 #ifndef _Geom_Geometry_HeaderFile
0018 #define _Geom_Geometry_HeaderFile
0019 
0020 #include <Standard.hxx>
0021 #include <Standard_Type.hxx>
0022 
0023 #include <Standard_Transient.hxx>
0024 #include <Standard_Real.hxx>
0025 class gp_Pnt;
0026 class gp_Ax1;
0027 class gp_Ax2;
0028 class gp_Vec;
0029 class gp_Trsf;
0030 
0031 
0032 class Geom_Geometry;
0033 DEFINE_STANDARD_HANDLE(Geom_Geometry, Standard_Transient)
0034 
0035 //! The abstract class Geometry for 3D space is the root
0036 //! class of all geometric objects from the Geom
0037 //! package. It describes the common behavior of these objects when:
0038 //! - applying geometric transformations to objects, and
0039 //! - constructing objects by geometric transformation (including copying).
0040 //! Warning
0041 //! Only transformations which do not modify the nature
0042 //! of the geometry can be applied to Geom objects: this
0043 //! is the case with translations, rotations, symmetries
0044 //! and scales; this is also the case with gp_Trsf
0045 //! composite transformations which are used to define
0046 //! the geometric transformations applied using the
0047 //! Transform or Transformed functions.
0048 //! Note: Geometry defines the "prototype" of the
0049 //! abstract method Transform which is defined for each
0050 //! concrete type of derived object. All other
0051 //! transformations are implemented using the Transform method.
0052 class Geom_Geometry : public Standard_Transient
0053 {
0054 
0055 public:
0056 
0057   
0058 
0059   //! Performs the symmetrical transformation of a Geometry
0060   //! with respect to the point P which is the center of the
0061   //! symmetry.
0062   Standard_EXPORT void Mirror (const gp_Pnt& P);
0063   
0064 
0065   //! Performs the symmetrical transformation of a Geometry
0066   //! with respect to an axis placement which is the axis of the
0067   //! symmetry.
0068   Standard_EXPORT void Mirror (const gp_Ax1& A1);
0069   
0070 
0071   //! Performs the symmetrical transformation of a Geometry
0072   //! with respect to a plane. The axis placement A2 locates
0073   //! the plane of the symmetry : (Location, XDirection, YDirection).
0074   Standard_EXPORT void Mirror (const gp_Ax2& A2);
0075   
0076 
0077   //! Rotates a Geometry. A1 is the axis of the rotation.
0078   //! Ang is the angular value of the rotation in radians.
0079   Standard_EXPORT void Rotate (const gp_Ax1& A1, const Standard_Real Ang);
0080   
0081 
0082   //! Scales a Geometry. S is the scaling value.
0083   Standard_EXPORT void Scale (const gp_Pnt& P, const Standard_Real S);
0084   
0085 
0086   //! Translates a Geometry.  V is the vector of the translation.
0087   Standard_EXPORT void Translate (const gp_Vec& V);
0088   
0089 
0090   //! Translates a Geometry from the point P1 to the point P2.
0091   Standard_EXPORT void Translate (const gp_Pnt& P1, const gp_Pnt& P2);
0092   
0093 
0094   //! Transformation of a geometric object. This tansformation
0095   //! can be a translation, a rotation, a symmetry, a scaling
0096   //! or a complex transformation obtained by combination of
0097   //! the previous elementaries transformations.
0098   //! (see class Transformation of the package Geom).
0099   Standard_EXPORT virtual void Transform (const gp_Trsf& T) = 0;
0100   
0101   Standard_NODISCARD Standard_EXPORT Handle(Geom_Geometry) Mirrored (const gp_Pnt& P) const;
0102   
0103   Standard_NODISCARD Standard_EXPORT Handle(Geom_Geometry) Mirrored (const gp_Ax1& A1) const;
0104   
0105   Standard_NODISCARD Standard_EXPORT Handle(Geom_Geometry) Mirrored (const gp_Ax2& A2) const;
0106   
0107   Standard_NODISCARD Standard_EXPORT Handle(Geom_Geometry) Rotated (const gp_Ax1& A1, const Standard_Real Ang) const;
0108   
0109   Standard_NODISCARD Standard_EXPORT Handle(Geom_Geometry) Scaled (const gp_Pnt& P, const Standard_Real S) const;
0110   
0111   Standard_NODISCARD Standard_EXPORT Handle(Geom_Geometry) Transformed (const gp_Trsf& T) const;
0112   
0113   Standard_NODISCARD Standard_EXPORT Handle(Geom_Geometry) Translated (const gp_Vec& V) const;
0114   
0115   Standard_NODISCARD Standard_EXPORT Handle(Geom_Geometry) Translated (const gp_Pnt& P1, const gp_Pnt& P2) const;
0116   
0117   //! Creates a new object which is a copy of this geometric object.
0118   Standard_EXPORT virtual Handle(Geom_Geometry) Copy() const = 0;
0119 
0120   //! Dumps the content of me into the stream
0121   Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
0122 
0123 
0124 
0125 
0126   DEFINE_STANDARD_RTTIEXT(Geom_Geometry,Standard_Transient)
0127 
0128 protected:
0129 
0130 
0131 
0132 
0133 private:
0134 
0135 
0136 
0137 
0138 };
0139 
0140 
0141 
0142 
0143 
0144 
0145 
0146 #endif // _Geom_Geometry_HeaderFile