Branch data Line data Source code
1 : : // Class: CubitTransformMatrix
2 : : //
3 : : // Description: A 4-Dimensional Matrix. Essentially the same as
4 : : // a generic CubitMatrix, except that it has some
5 : : // extra 3D transformation functions.
6 : : //
7 : : // All transformations are pre-multiplications,
8 : : // meaning that M*V will transform a point V
9 : : // in the same order transformations are applied to M.
10 : : //
11 : : // Owner: Darryl Melander
12 : :
13 : : #ifndef CUBIT_MATRIX_4D_HPP
14 : : #define CUBIT_MATRIX_4D_HPP
15 : :
16 : : #include "CubitMatrix.hpp"
17 : : #include "CubitVector.hpp"
18 : : #include "CGMUtilConfigure.h"
19 : :
20 : 462 : class CUBIT_UTIL_EXPORT CubitTransformMatrix : public CubitMatrix
21 : : {
22 : : public:
23 : : CubitTransformMatrix();
24 : : CubitTransformMatrix(const CubitTransformMatrix& from);
25 : : ~CubitTransformMatrix();
26 : :
27 : : CubitTransformMatrix& translate(const CubitVector& v);
28 : : CubitTransformMatrix& translate (double x, double y, double z);
29 : :
30 : : CubitTransformMatrix& rotate(double degrees, const CubitVector& vector);
31 : : CubitTransformMatrix& rotate(double degrees, char axis);
32 : : CubitTransformMatrix& rotate(double degrees, const CubitVector& axis_from,
33 : : const CubitVector& axis_to);
34 : :
35 : : void get_rotation_axis_and_angle(CubitVector &rotation_axis, double &angle);
36 : :
37 : : CubitTransformMatrix& reflect(const CubitVector& vector);
38 : :
39 : : CubitTransformMatrix& scale_about_origin (const CubitVector& scale);
40 : : CubitTransformMatrix& scale_about_origin (double x, double y, double z);
41 : : CubitTransformMatrix& scale_about_origin (double scale);
42 : : CubitTransformMatrix& inverse();
43 : :
44 : : CubitVector operator* (const CubitVector& point) const;
45 : : friend CUBIT_UTIL_EXPORT CubitVector operator* (const CubitVector& point,
46 : : const CubitTransformMatrix& matrix);
47 : :
48 : : CubitTransformMatrix operator*(const CubitTransformMatrix& matrix) const;
49 : : CubitMatrix operator*(const CubitMatrix& matrix) const;
50 : : CubitTransformMatrix operator*(double val) const;
51 : :
52 : : //! return the origin of this system
53 : : CubitVector origin() const;
54 : : //! return the x-axis
55 : : CubitVector x_axis() const;
56 : : //! return the y-axis
57 : : CubitVector y_axis() const;
58 : : //! return the z-axis
59 : : CubitVector z_axis() const;
60 : :
61 : : // convenience helper for making transform matrices
62 : : static CubitTransformMatrix construct_matrix(const CubitVector& origin,
63 : : const CubitVector& x_axis,
64 : : const CubitVector& y_axis);
65 : :
66 : : void print_me() const;
67 : : };
68 : :
69 : : #endif
70 : :
|