Fission FSN
Loading...
Searching...
No Matches
fsAffineMtx2d.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsAffineMtx2d.h
4*
5* Purpose: Scale, rotate and translate transformations of 2d
6* vectors.
7*
8* Column major order:
9* Row 1 x Rot and Scale X
10* Row 2 y Rot and Scale Y
11* Row 3 x and y Translate
12*
13*********************************************************************/
14
15#ifndef fsAffineMtx2dhdr
16#define fsAffineMtx2dhdr
17
18#include <vector>
19
20#include "fsBaseTypes.h"
21#include "fsVec2d.h"
22
23struct fsPoint;
24
25
27{
28public:
29
31
32 fsVec2d scaleGet() const;
33
34 fsVec2d translateGet() const;
35 void translateSet(fsVec2d const& pTrans);
36
37 void set(fsF32 p00, fsF32 p01, fsF32 p10, fsF32 p11, fsF32 p20, fsF32 p21);
38 void set(fsS32 pRow, fsS32 pCol, fsF32 pVal);
39
40 fsF32 get(fsS32 pRow, fsS32 pCol) const;
41
42 void fsVec2dTransform(fsVec2d const& pInVec2d, fsVec2d* pOutVec2d) const;
43 void fsVec2dsTransform(fsVec2d const* pInVec2d, fsVec2d* pOutVec2d, fsS32 pCount) const;
44 void fsVec2dsTransform(std::vector<fsVec2d> const& pInVec2d, std::vector<fsVec2d>& pOutVec2d) const;
45
46 fsBool fsVec2DInverseTransform(fsVec2d const& pInVec2d, fsVec2d* pOutVec2d) const;
47 fsF32 determinantGet() const;
48
49 void identitySet();
50
51 void calculate(const fsPoint& pTranslate, fsF32 pScaleX, fsF32 pScaleY, fsF32 pAngleRadians);
52 void calculate(const fsVec2d& pTranslate, fsF32 pScaleX, fsF32 pScaleY, fsF32 pAngleRadians);
53
55
56 fsAffineMtx2d(fsVec2d const& pTranslate = fsVec2d(0, 0), fsF32 pScaleX = 1.0f, fsF32 pScaleY = 1.0f,
57 fsF32 pAngleRadians = 0);
58 virtual ~fsAffineMtx2d();
59
60protected:
61
62 fsF32 mMtx[3][2];
63
64 // 3 rows by 2 columns
65 //
66 // 1, 2 (0,0), (0,1)
67 // 3, 4 (1,0), (1,1)
68 // 5, 6 (2,0), (2,1)
69
70 // (a, b, 0)
71 // (c, d, 0)
72 // (tx, ty, 1)
73
74private:
75};
76
78
79#endif
Definition fsAffineMtx2d.h:27
void identitySet()
Definition fsAffineMtx2d.cpp:152
fsF32 get(fsS32 pRow, fsS32 pCol) const
Definition fsAffineMtx2d.cpp:75
void translateSet(fsVec2d const &pTrans)
Definition fsAffineMtx2d.cpp:52
fsF32 determinantGet() const
Definition fsAffineMtx2d.cpp:147
fsVec2d translateGet() const
Definition fsAffineMtx2d.cpp:44
fsBool fsVec2DInverseTransform(fsVec2d const &pInVec2d, fsVec2d *pOutVec2d) const
Definition fsAffineMtx2d.cpp:128
void calculate(const fsPoint &pTranslate, fsF32 pScaleX, fsF32 pScaleY, fsF32 pAngleRadians)
Definition fsAffineMtx2d.cpp:184
virtual ~fsAffineMtx2d()
Definition fsAffineMtx2d.cpp:220
fsAffineMtx2d(fsVec2d const &pTranslate=fsVec2d(0, 0), fsF32 pScaleX=1.0f, fsF32 pScaleY=1.0f, fsF32 pAngleRadians=0)
Definition fsAffineMtx2d.cpp:213
void fsVec2dTransform(fsVec2d const &pInVec2d, fsVec2d *pOutVec2d) const
Definition fsAffineMtx2d.cpp:82
void set(fsF32 p00, fsF32 p01, fsF32 p10, fsF32 p11, fsF32 p20, fsF32 p21)
Definition fsAffineMtx2d.cpp:58
void fsVec2dsTransform(fsVec2d const *pInVec2d, fsVec2d *pOutVec2d, fsS32 pCount) const
Definition fsAffineMtx2d.cpp:108
fsAffineMtx2d inverseGet() const
Definition fsAffineMtx2d.cpp:12
fsF32 mMtx[3][2]
Definition fsAffineMtx2d.h:62
fsVec2d scaleGet() const
Definition fsAffineMtx2d.cpp:34
fsAffineMtx2d & operator*=(fsAffineMtx2d const &pRhs)
Definition fsAffineMtx2d.cpp:191
fsAffineMtx2d operator*(fsAffineMtx2d lhs, fsAffineMtx2d const &rhs)
Definition fsAffineMtx2d.cpp:207
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
float fsF32
Definition fsBaseTypes.h:28
Definition fsPoint.h:17
Definition fsVec2d.h:16