libMVRgdtf 40bc00a
A library for GDTF and MVR
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
VWTransformMatrix.h
Go to the documentation of this file.
1//
2// Copyright Nemetschek Vectorworks, Inc.
3// Use of this file is governed by the Nemetschek Vectorworks SDK License Agreement
4// http://developer.vectorworks.net/index.php?title=Vectorworks_SDK_License
5//
6
7#pragma once
8
9namespace VectorworksMVR
10{
11 namespace VWFC
12 {
13 namespace Math
14 {
16 {
17 public:
19 VWTransformMatrix(const VWPoint3D& uVec, const VWPoint3D& vVec, const VWPoint3D& wVec, bool bTransponse=false);
20 VWTransformMatrix(const VWPoint3D& uVec, const VWPoint3D& vVec, const VWPoint3D& wVec, const VWPoint3D& offset, bool bTransponse=false);
21 VWTransformMatrix(const VWPoint3D& offset);
22 VWTransformMatrix(double scaleX, double scaleY, double scaleZ);
25 virtual ~VWTransformMatrix();
26
28
29 bool operator==(const VWTransformMatrix& mat) const;
30
31 public:
32 void SetIdentity();
33 bool IsIdentity() const;
34
35 bool IsEqual(const VWTransformMatrix& mat) const;
36
37 void SetRotation(double angleDeg, VWPoint3D axisRot);
39 void SetRotation(VWPoint3D newU);
40 void SetTranslation(double x, double y, double z);
41 void SetTranslation(const VWPoint3D& pt);
42 void SetMatrix(const VWPoint3D& uVec, const VWPoint3D& vVec, const VWPoint3D& wVec, bool bTransponse=false);
43 void SetMatrix(const VWPoint3D& uVec, const VWPoint3D& vVec, const VWPoint3D& wVec, const VWPoint3D& offset, bool bTransponse=false);
44 void SetMatrix(const VWPoint3D& offset);
45 void SetMatrix(double scaleX, double scaleY, double scaleZ);
46
47 VWPoint3D GetUVector() const;
48 void SetUVector(double x, double y, double z);
49 void SetUVector(const VWPoint3D& uVec);
50 VWPoint3D GetVVector() const;
51 void SetVVector(double x, double y, double z);
52 void SetVVector(const VWPoint3D& vVec);
53 VWPoint3D GetWVector() const;
54 void SetWVector(double x, double y, double z);
55 void SetWVector(const VWPoint3D& wVec);
56
57 VWPoint3D GetOffset() const;
58 void SetOffset(double x, double y, double z);
59 void SetOffset(const VWPoint3D& off);
60
64
65 bool IsFlipped() const;
66 void FlipMatrix();
67
68 void TranslateAfter(double x, double y, double z);
69 void TranslateAfter(const VWPoint3D& offset);
70
71 void TranslateBefore(double x, double y, double z);
72 void TranslateBefore(const VWPoint3D& offset);
73
74 void RotateXAfter(double angleDeg);
75 void RotateYAfter(double angleDeg);
76 void RotateZAfter(double angleDeg);
77
78 void RotateXBefore(double angleDeg);
79 void RotateYBefore(double angleDeg);
80 void RotateZBefore(double angleDeg);
81
82 void RotateRoundPoint(const VWPoint3D& centerPt, double angXDeg, double angYDeg, double angZDeg);
83
84 void ScaleAfter(double scaleX, double scaleY, double scaleZ);
85
86 void ScaleWithCenter(const VWPoint3D& centerPt, double scaleX, double scaleY, double scaleZ);
87
88 VWPoint2D PointTransform(const VWPoint2D& point) const;
89 VWPoint3D PointTransform(const VWPoint3D& point) const;
90 VWPoint2D InversePointTransform(const VWPoint2D& point) const;
91 VWPoint3D InversePointTransform(const VWPoint3D& point) const;
92
93 void TransformPoint(VWPoint2D& inOutPt) const;
94 void TransformPoint(VWPoint3D& inOutPt) const;
95 void InverseTransformPoint(VWPoint2D& inOutPt) const;
96 void InverseTransformPoint(VWPoint3D& inOutPt) const;
97
98 void PointsTransform(TSTLPoints2DArray& inOutArr2DPoints) const;
99 void PointsTransform(TSTLPoints3DArray& inOutArr3DPoints) const;
100 void InversePointsTransform(TSTLPoints2DArray& inOutArr2DPoints) const;
101 void InversePointsTransform(TSTLPoints3DArray& inOutArr3DPoints) const;
102
103 // operations
104 VWPoint2D operator*(const VWPoint2D& point) const;
105 VWPoint3D operator*(const VWPoint3D& point) const;
106 VWTransformMatrix operator*(const VWTransformMatrix& matrix) const;
108
109 public:
110 // compatibility with SDK
111 operator const TransformMatrix&() const;
112 operator TransformMatrix&();
113
114
115 public:
116 // gets the minor from rows {row0, row1} and columns {col0, col1}.
117 double GetMinor2x2(size_t row0, size_t row1, size_t col0, size_t col1) const;
118
119 // matrix data
120 public:
121 // fMatrix.mat[0][0] fMatrix.mat[0][1] fMatrix.mat[0][2] - u(x, y, z)
122 // fMatrix.mat[1][0] fMatrix.mat[1][1] fMatrix.mat[1][2] - v(x, y, z)
123 // fMatrix.mat[2][0] fMatrix.mat[2][1] fMatrix.mat[2][2] - w(x, y, z)
124 // fMatrix.mat[3][0] fMatrix.mat[3][1] fMatrix.mat[3][2] - offset(x,y,z)
126 };
127 }
128 }
129}
Definition MCCoordTypes.h:1674
Definition VWPoint2D.h:17
Definition VWPoint3D.h:19
Definition VWTransformMatrix.h:16
void SetMatrix(const VWPoint3D &uVec, const VWPoint3D &vVec, const VWPoint3D &wVec, bool bTransponse=false)
Definition VWTransformMatrix.cpp:188
VWPoint2D operator*(const VWPoint2D &point) const
Definition VWTransformMatrix.cpp:699
VWPoint3D GetVVector() const
Definition VWTransformMatrix.cpp:249
void RotateXBefore(double angleDeg)
Definition VWTransformMatrix.cpp:471
VWPoint2D PointTransform(const VWPoint2D &point) const
Definition VWTransformMatrix.cpp:559
void SetRotation(VWPoint3D newZ, VWPoint3D newY)
void ScaleAfter(double scaleX, double scaleY, double scaleZ)
Definition VWTransformMatrix.cpp:536
void InversePointsTransform(TSTLPoints2DArray &inOutArr2DPoints) const
Definition VWTransformMatrix.cpp:679
VWPoint3D GetOffset() const
Definition VWTransformMatrix.cpp:279
VWTransformMatrix & Invert()
Definition VWTransformMatrix.cpp:298
void InverseTransformPoint(VWPoint2D &inOutPt) const
Definition VWTransformMatrix.cpp:633
VWTransformMatrix GetInverted() const
Definition VWTransformMatrix.cpp:357
void SetTranslation(double x, double y, double z)
Definition VWTransformMatrix.cpp:174
void SetUVector(double x, double y, double z)
Definition VWTransformMatrix.cpp:239
void RotateRoundPoint(const VWPoint3D &centerPt, double angXDeg, double angYDeg, double angZDeg)
Definition VWTransformMatrix.cpp:543
void RotateYAfter(double angleDeg)
Definition VWTransformMatrix.cpp:427
void RotateXAfter(double angleDeg)
Definition VWTransformMatrix.cpp:405
void RotateZAfter(double angleDeg)
Definition VWTransformMatrix.cpp:449
VWPoint3D GetWVector() const
Definition VWTransformMatrix.cpp:264
bool operator==(const VWTransformMatrix &mat) const
Definition VWTransformMatrix.cpp:65
void SetVVector(double x, double y, double z)
Definition VWTransformMatrix.cpp:254
bool IsIdentity() const
Definition VWTransformMatrix.cpp:78
VWPoint3D GetUVector() const
Definition VWTransformMatrix.cpp:234
VWTransformMatrix & operator*=(const VWTransformMatrix &matrix)
Definition VWTransformMatrix.cpp:715
void TranslateBefore(double x, double y, double z)
Definition VWTransformMatrix.cpp:393
VWPoint2D InversePointTransform(const VWPoint2D &point) const
Definition VWTransformMatrix.cpp:577
virtual ~VWTransformMatrix()
Definition VWTransformMatrix.cpp:52
void SetWVector(double x, double y, double z)
Definition VWTransformMatrix.cpp:269
void SetOffset(double x, double y, double z)
Definition VWTransformMatrix.cpp:284
TransformMatrix fMatrix
Definition VWTransformMatrix.h:125
void TransformPoint(VWPoint2D &inOutPt) const
Definition VWTransformMatrix.cpp:613
VWTransformMatrix & operator=(const VWTransformMatrix &mat)
Definition VWTransformMatrix.cpp:56
void FlipMatrix()
Definition VWTransformMatrix.cpp:372
bool IsFlipped() const
Definition VWTransformMatrix.cpp:363
void PointsTransform(TSTLPoints2DArray &inOutArr2DPoints) const
Definition VWTransformMatrix.cpp:661
void ScaleWithCenter(const VWPoint3D &centerPt, double scaleX, double scaleY, double scaleZ)
Definition VWTransformMatrix.cpp:552
double GetMinor2x2(size_t row0, size_t row1, size_t col0, size_t col1) const
Definition VWTransformMatrix.cpp:748
VWTransformMatrix()
Definition VWTransformMatrix.cpp:11
void SetIdentity()
Definition VWTransformMatrix.cpp:70
void RotateZBefore(double angleDeg)
Definition VWTransformMatrix.cpp:517
void RotateYBefore(double angleDeg)
Definition VWTransformMatrix.cpp:494
void TranslateAfter(double x, double y, double z)
Definition VWTransformMatrix.cpp:381
bool IsEqual(const VWTransformMatrix &mat) const
Definition VWTransformMatrix.cpp:89
void SetRotation(double angleDeg, VWPoint3D axisRot)
Definition VWTransformMatrix.cpp:100
std::vector< VWPoint2D > TSTLPoints2DArray
Definition VWPoint2D.h:151
std::vector< VWPoint3D > TSTLPoints3DArray
Definition VWPoint3D.h:145
Definition CieColor.h:9