11 #include "pico/double.h"
15 template <
typename m2type>
class cMat2D
24 inline m2type
GetX(m2type x, m2type y)
const
26 return x*m11 + y*m12 + m13;
30 inline m2type
GetY(m2type x, m2type y)
const
32 return x*m21 + y*m22 + m23;
38 m11 = 1; m12 = 0; m13 = 0;
39 m21 = 0; m22 = 1; m23 = 0;
45 m11 = m->m11; m12 = m->m12; m13 = m->m13;
46 m21 = m->m21; m22 = m->m22; m23 = m->m23;
118 inline void RotSC(m2type sina, m2type cosa)
122 m11 = t1*cosa - t2*sina;
123 m21 = t1*sina + t2*cosa;
127 m12 = t1*cosa - t2*sina;
128 m22 = t1*sina + t2*cosa;
132 m13 = t1*cosa - t2*sina;
133 m23 = t1*sina + t2*cosa;
139 this->
RotSC(sin(a), cos(a));
250 #define TOFRACT(f) ((int)((f)*FRACTMUL + (((f) < 0) ? -0.5f : 0.5f)))
281 void PrepDrawImg(
int ws,
int hs,
int x0,
int y0,
int wd,
int hd,
282 float shearx,
float sheary,
float r,
float tx,
float ty);
Transformation matrix.
Definition: mat2d.h:16
void TransY(m2type ty)
Translate in Y direction.
Definition: mat2d.h:72
void RotSC(m2type sina, m2type cosa)
Rotate, using sin and cos.
Definition: mat2d.h:118
void Unit()
Set unit matrix.
Definition: mat2d.h:36
void ScaleX(m2type sx)
Scale in X direction.
Definition: mat2d.h:86
void Copy(const cMat2D *m)
Copy matrix.
Definition: mat2d.h:43
void Rot180()
Rotate by 180 deg (=flipX and flipY) (sina=0, cosa=-1)
Definition: mat2d.h:159
void Rot(m2type a)
Rotate, using angle.
Definition: mat2d.h:137
void TransX(m2type tx)
Translate in X direction.
Definition: mat2d.h:58
void Rot270()
Rotate by 270 deg (sina=-1, cosa=0)
Definition: mat2d.h:170
void FlipX()
Flip in X direction.
Definition: mat2d.h:242
m2type GetX(m2type x, m2type y) const
Transform X.
Definition: mat2d.h:24
void ScaleY(m2type sy)
Scale in Y direction.
Definition: mat2d.h:102
void Rot90()
Rotate by 90 deg (sina=1, cosa=0)
Definition: mat2d.h:143
void ShearY(m2type dy)
Shear in Y direction.
Definition: mat2d.h:210
void FlipY()
Flip in Y direction.
Definition: mat2d.h:226
void ShearX(m2type dx)
Shear in X direction.
Definition: mat2d.h:194
m2type GetY(m2type x, m2type y) const
Transform Y.
Definition: mat2d.h:30
2D Transformation Matrix
Definition: mat2d.h:263
void ExportInt(int *mat) const
Export matrix to int array[6].
Definition: mat2d.cpp:53
void PrepDrawImg(int ws, int hs, int x0, int y0, int wd, int hd, float shearx, float sheary, float r, float tx, float ty)
Prepare transformation matrix (for DrawImgMat() function)
Definition: mat2d.cpp:22
VGA common definitions of C and ASM.