OPTPiX SpriteStudio SDK
Loading...
Searching...
No Matches
ssplayer_matrix.h
Go to the documentation of this file.
1#ifndef __SSPLAYER_MATRIX__
2#define __SSPLAYER_MATRIX__
3
4#include "../Loader/sstypes.h"
5#include <memory>
6
7namespace spritestudio6
8{
9
10void IdentityMatrix( float* matrix );
11void ScaleMatrix( float* _matrix , const float x , const float y , const float z);
12void TranslationMatrix( float* _matrix , const float x , const float y , const float z );
13void MultiplyMatrix(const float *m0, const float *m1, float *matrix);
14void Matrix4RotationX( float* _matrix ,const float radians );
15void Matrix4RotationY( float* _matrix ,const float radians );
16void Matrix4RotationZ( float* _matrix ,const float radians );
17
18void MatrixTransformVector3(float* _matrix, SsVector3& src, SsVector3& dst);
19
20
21
22inline void TranslationMatrixM( float* _matrix , const float x , const float y , const float z )
23{
24 float _m[16];
25 IdentityMatrix( _m );
26 TranslationMatrix( _m , x , y , z );
27
28 MultiplyMatrix( _m , _matrix , _matrix );
29}
30
31inline void ScaleMatrixM( float* _matrix , const float x , const float y , const float z )
32{
33
34 float _m[16];
35 IdentityMatrix( _m );
36 ScaleMatrix( _m , x , y , z );
37 MultiplyMatrix( _m , _matrix , _matrix );
38}
39
40inline void RotationXYZMatrixM( float* _matrix , const float x , const float y , const float z )
41{
42
43 if ( x != 0.0f )
44 {
45 float _m[16];
46 IdentityMatrix( _m );
47 Matrix4RotationX( _m , x );
48
49 MultiplyMatrix( _m , _matrix , _matrix );
50 }
51
52 if ( y != 0.0f )
53 {
54 float _m[16];
55 IdentityMatrix( _m );
56 Matrix4RotationY( _m , y );
57
58 MultiplyMatrix( _m , _matrix , _matrix );
59 }
60
61 if ( z != 0.0f )
62 {
63 float _m[16];
64 IdentityMatrix( _m );
65 Matrix4RotationZ( _m , z );
66
67 MultiplyMatrix( _m , _matrix , _matrix );
68 }
69}
70
71
73{
74public:
75 float _matrix[16];
76
77
78public:
80 {
82 }
84 {
87 }
88 virtual ~SsOpenGLMatrix() {}
89
90 //単位行列の作成
91 void identityMatrix();
92
93
94 void popMatrix(float* dst);
95 void pushMatrix(float* src);
96
97
98 inline void Scaling(const float x, const float y, const float z)
99 {
101 m.setScaleMatrix(x, y, z);
102 this->multiply(m, *this);
103 }
104
105 inline void Translation(const float x, const float y, const float z)
106 {
109 this->multiply(m, *this);
110 }
111
112
113 void setScaleMatrix(const float x, const float y, const float z);
114 void setTranslationMatrix(const float x, const float y, const float z);
116
117 // 4x4の逆行列の計算
118 void inverseMatrix();
119
120
121 float getPositionX() { return _matrix[12]; }
122 float getPositionY() { return _matrix[12 + 1]; }
123
124 void TransformVector3(SsVector3& in, SsVector3& out);
125// void TransformVector4(SsVector4& src, SsVector4& dst);
126
127
128
129 inline void RotationXYZ(const float x, const float y, const float z)
130 {
131 if (x != 0.0f)
132 {
134 SsOpenGLMatrix temp(this->_matrix);
136 this->multiply(mx, temp);
137 }
138
139 if (y != 0.0f)
140 {
142 SsOpenGLMatrix temp(this->_matrix);
144 this->multiply(my, temp);
145 }
146
147 if (z != 0.0f)
148 {
150 SsOpenGLMatrix temp(this->_matrix);
152 this->multiply(mz, temp);
153 }
154 }
155
156 void Matrix4RotationX(const float radians);
157 void Matrix4RotationY(const float radians);
158 void Matrix4RotationZ(const float radians);
159private:
160
161
162};
163
164
165} // namespace spritestudio6
166
167#endif
168
Definition ssplayer_matrix.h:73
void setScaleMatrix(const float x, const float y, const float z)
Definition ssplayer_matrix.cpp:302
void setTranslationMatrix(const float x, const float y, const float z)
Definition ssplayer_matrix.cpp:314
float getPositionY()
Definition ssplayer_matrix.h:122
virtual ~SsOpenGLMatrix()
Definition ssplayer_matrix.h:88
void Translation(const float x, const float y, const float z)
Definition ssplayer_matrix.h:105
float _matrix[16]
Definition ssplayer_matrix.h:75
void inverseMatrix()
Definition ssplayer_matrix.cpp:354
SsOpenGLMatrix()
Definition ssplayer_matrix.h:79
void multiply(SsOpenGLMatrix &m1, SsOpenGLMatrix &m2)
Definition ssplayer_matrix.cpp:345
void Matrix4RotationZ(const float radians)
Definition ssplayer_matrix.cpp:274
void Matrix4RotationY(const float radians)
Definition ssplayer_matrix.cpp:240
void popMatrix(float *dst)
Definition ssplayer_matrix.cpp:200
void pushMatrix(float *src)
Definition ssplayer_matrix.cpp:205
void RotationXYZ(const float x, const float y, const float z)
Definition ssplayer_matrix.h:129
SsOpenGLMatrix(float *src)
Definition ssplayer_matrix.h:83
void TransformVector3(SsVector3 &in, SsVector3 &out)
Definition ssplayer_matrix.cpp:432
void Scaling(const float x, const float y, const float z)
Definition ssplayer_matrix.h:98
float getPositionX()
Definition ssplayer_matrix.h:121
void identityMatrix()
Definition ssplayer_matrix.cpp:186
void Matrix4RotationX(const float radians)
Definition ssplayer_matrix.cpp:213
GLint y
Definition glad.h:1965
GLdouble GLdouble z
Definition glad.h:2301
GLenum src
Definition glad.h:4176
GLdouble x
Definition glad.h:2847
GLenum GLenum dst
Definition glad.h:4176
Definition ISsEffectRender.h:5
void IdentityMatrix(float *matrix)
Definition ssplayer_matrix.cpp:12
void MatrixTransformVector3(float *_matrix, SsVector3 &src, SsVector3 &dst)
Definition ssplayer_matrix.cpp:158
void Matrix4RotationZ(float *_matrix, const float radians)
Definition ssplayer_matrix.cpp:132
void MultiplyMatrix(const float *m0, const float *m1, float *matrix)
Definition ssplayer_matrix.cpp:56
void Matrix4RotationY(float *_matrix, const float radians)
Definition ssplayer_matrix.cpp:104
SsPoint3 SsVector3
Definition sstypes.h:199
void Matrix4RotationX(float *_matrix, const float radians)
Definition ssplayer_matrix.cpp:77
void TranslationMatrixM(float *_matrix, const float x, const float y, const float z)
Definition ssplayer_matrix.h:22
void ScaleMatrix(float *_matrix, const float x, const float y, const float z)
Definition ssplayer_matrix.cpp:27
void RotationXYZMatrixM(float *_matrix, const float x, const float y, const float z)
Definition ssplayer_matrix.h:40
void TranslationMatrix(float *_matrix, const float x, const float y, const float z)
Definition ssplayer_matrix.cpp:39
void ScaleMatrixM(float *_matrix, const float x, const float y, const float z)
Definition ssplayer_matrix.h:31