/usr/include/oce/gp_GTrsf.hxx is in liboce-foundation-dev 0.18.2-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | // 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 _gp_GTrsf_HeaderFile
#define _gp_GTrsf_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Macro.hxx>
#include <gp_Mat.hxx>
#include <gp_XYZ.hxx>
#include <gp_TrsfForm.hxx>
#include <Standard_Real.hxx>
#include <Standard_Storable.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Boolean.hxx>
#include <gp_Trsf.hxx>
#include <Standard_PrimitiveTypes.hxx>
class Standard_ConstructionError;
class Standard_OutOfRange;
class gp_Trsf;
class gp_Mat;
class gp_XYZ;
class gp_Ax1;
class gp_Ax2;
Standard_EXPORT const Handle(Standard_Type)& STANDARD_TYPE(gp_GTrsf);
//! Defines a non-persistent transformation in 3D space.
//! This transformation is a general transformation.
//! It can be a Trsf from gp, an affinity, or you can define
//! your own transformation giving the matrix of transformation.
//!
//! With a Gtrsf you can transform only a triplet of coordinates
//! XYZ. It is not possible to transform other geometric objects
//! because these transformations can change the nature of non-
//! elementary geometric objects.
//! The transformation GTrsf can be represented as follow :
//!
//! V1 V2 V3 T XYZ XYZ
//! | a11 a12 a13 a14 | | x | | x'|
//! | a21 a22 a23 a24 | | y | | y'|
//! | a31 a32 a33 a34 | | z | = | z'|
//! | 0 0 0 1 | | 1 | | 1 |
//!
//! where {V1, V2, V3} define the vectorial part of the
//! transformation and T defines the translation part of the
//! transformation.
//! Warning
//! A GTrsf transformation is only applicable to
//! coordinates. Be careful if you apply such a
//! transformation to all points of a geometric object, as
//! this can change the nature of the object and thus
//! render it incoherent!
//! Typically, a circle is transformed into an ellipse by an
//! affinity transformation. To avoid modifying the nature of
//! an object, use a gp_Trsf transformation instead, as
//! objects of this class respect the nature of geometric objects.
class gp_GTrsf
{
public:
DEFINE_STANDARD_ALLOC
//! Returns the Identity transformation.
gp_GTrsf();
//! Converts the gp_Trsf transformation T into a
//! general transformation, i.e. Returns a GTrsf with
//! the same matrix of coefficients as the Trsf T.
gp_GTrsf(const gp_Trsf& T);
//! Creates a transformation based on the matrix M and the
//! vector V where M defines the vectorial part of
//! the transformation, and V the translation part, or
gp_GTrsf(const gp_Mat& M, const gp_XYZ& V);
//! Changes this transformation into an affinity of ratio Ratio
//! with respect to the axis A1.
//! Note: an affinity is a point-by-point transformation that
//! transforms any point P into a point P' such that if H is
//! the orthogonal projection of P on the axis A1 or the
//! plane A2, the vectors HP and HP' satisfy:
//! HP' = Ratio * HP.
void SetAffinity (const gp_Ax1& A1, const Standard_Real Ratio) ;
//! Changes this transformation into an affinity of ratio Ratio
//! with respect to the plane defined by the origin, the "X Direction" and
//! the "Y Direction" of coordinate system A2.
//! Note: an affinity is a point-by-point transformation that
//! transforms any point P into a point P' such that if H is
//! the orthogonal projection of P on the axis A1 or the
//! plane A2, the vectors HP and HP' satisfy:
//! HP' = Ratio * HP.
void SetAffinity (const gp_Ax2& A2, const Standard_Real Ratio) ;
//! Replaces the coefficient (Row, Col) of the matrix representing
//! this transformation by Value. Raises OutOfRange
//! if Row < 1 or Row > 3 or Col < 1 or Col > 4
void SetValue (const Standard_Integer Row, const Standard_Integer Col, const Standard_Real Value) ;
//! Replaces the vectorial part of this transformation by Matrix.
void SetVectorialPart (const gp_Mat& Matrix) ;
//! Replaces the translation part of
//! this transformation by the coordinates of the number triple Coord.
Standard_EXPORT void SetTranslationPart (const gp_XYZ& Coord) ;
//! Assigns the vectorial and translation parts of T to this transformation.
void SetTrsf (const gp_Trsf& T) ;
//! Returns true if the determinant of the vectorial part of
//! this transformation is negative.
Standard_Boolean IsNegative() const;
//! Returns true if this transformation is singular (and
//! therefore, cannot be inverted).
//! Note: The Gauss LU decomposition is used to invert the
//! transformation matrix. Consequently, the transformation
//! is considered as singular if the largest pivot found is less
//! than or equal to gp::Resolution().
//! Warning
//! If this transformation is singular, it cannot be inverted.
Standard_Boolean IsSingular() const;
//! Returns the nature of the transformation. It can be an
//! identity transformation, a rotation, a translation, a mirror
//! transformation (relative to a point, an axis or a plane), a
//! scaling transformation, a compound transformation or
//! some other type of transformation.
Standard_EXPORT gp_TrsfForm Form() const;
//! verify and set the shape of the GTrsf Other or CompoundTrsf
//! Ex :
//! myGTrsf.SetValue(row1,col1,val1);
//! myGTrsf.SetValue(row2,col2,val2);
//! ...
//! myGTrsf.SetForm();
Standard_EXPORT void SetForm() ;
//! Returns the translation part of the GTrsf.
const gp_XYZ& TranslationPart() const;
//! Computes the vectorial part of the GTrsf. The returned Matrix
//! is a 3*3 matrix.
const gp_Mat& VectorialPart() const;
//! Returns the coefficients of the global matrix of transformation.
//! Raises OutOfRange if Row < 1 or Row > 3 or Col < 1 or Col > 4
Standard_Real Value (const Standard_Integer Row, const Standard_Integer Col) const;
Standard_Real operator() (const Standard_Integer Row, const Standard_Integer Col) const
{
return Value(Row,Col);
}
Standard_EXPORT void Invert() ;
//! Computes the reverse transformation.
//! Raises an exception if the matrix of the transformation
//! is not inversible.
gp_GTrsf Inverted() const;
//! Computes the transformation composed from T and <me>.
//! In a C++ implementation you can also write Tcomposed = <me> * T.
//! Example :
//! GTrsf T1, T2, Tcomp; ...............
//! //composition :
//! Tcomp = T2.Multiplied(T1); // or (Tcomp = T2 * T1)
//! // transformation of a point
//! XYZ P(10.,3.,4.);
//! XYZ P1(P);
//! Tcomp.Transforms(P1); //using Tcomp
//! XYZ P2(P);
//! T1.Transforms(P2); //using T1 then T2
//! T2.Transforms(P2); // P1 = P2 !!!
gp_GTrsf Multiplied (const gp_GTrsf& T) const;
gp_GTrsf operator * (const gp_GTrsf& T) const
{
return Multiplied(T);
}
//! Computes the transformation composed with <me> and T.
//! <me> = <me> * T
Standard_EXPORT void Multiply (const gp_GTrsf& T) ;
void operator *= (const gp_GTrsf& T)
{
Multiply(T);
}
//! Computes the product of the transformation T and this
//! transformation and assigns the result to this transformation.
//! this = T * this
Standard_EXPORT void PreMultiply (const gp_GTrsf& T) ;
Standard_EXPORT void Power (const Standard_Integer N) ;
//! Computes:
//! - the product of this transformation multiplied by itself
//! N times, if N is positive, or
//! - the product of the inverse of this transformation
//! multiplied by itself |N| times, if N is negative.
//! If N equals zero, the result is equal to the Identity
//! transformation.
//! I.e.: <me> * <me> * .......* <me>, N time.
//! if N =0 <me> = Identity
//! if N < 0 <me> = <me>.Inverse() *...........* <me>.Inverse().
//!
//! Raises an exception if N < 0 and if the matrix of the
//! transformation not inversible.
gp_GTrsf Powered (const Standard_Integer N) const;
void Transforms (gp_XYZ& Coord) const;
//! Transforms a triplet XYZ with a GTrsf.
void Transforms (Standard_Real& X, Standard_Real& Y, Standard_Real& Z) const;
gp_Trsf Trsf() const;
const gp_Mat& _CSFDB_Getgp_GTrsfmatrix() const { return matrix; }
const gp_XYZ& _CSFDB_Getgp_GTrsfloc() const { return loc; }
gp_TrsfForm _CSFDB_Getgp_GTrsfshape() const { return shape; }
void _CSFDB_Setgp_GTrsfshape(const gp_TrsfForm p) { shape = p; }
Standard_Real _CSFDB_Getgp_GTrsfscale() const { return scale; }
void _CSFDB_Setgp_GTrsfscale(const Standard_Real p) { scale = p; }
protected:
private:
gp_Mat matrix;
gp_XYZ loc;
gp_TrsfForm shape;
Standard_Real scale;
};
#include <gp_GTrsf.lxx>
#endif // _gp_GTrsf_HeaderFile
|