mirror of
https://git.coom.tech/drummyfish/small3dlib.git
synced 2024-11-21 20:39:57 +01:00
Continue matrices
This commit is contained in:
parent
a3fd54891c
commit
9eccbe986a
2 changed files with 31 additions and 4 deletions
27
s3l.h
27
s3l.h
|
@ -194,9 +194,10 @@ static inline void S3L_initMat4(S3L_Mat4 *m)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Multiplies a vector by a matrix with normalization by S3L_FRACTIONS_PER_UNIT.
|
Multiplies a vector by a matrix with normalization by S3L_FRACTIONS_PER_UNIT.
|
||||||
|
Result is stored in the input vector.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline void S3L_vec4Xmat4(S3L_Vec4 *v, S3L_Mat4 *m)
|
void S3L_vec4Xmat4(S3L_Vec4 *v, S3L_Mat4 *m)
|
||||||
{
|
{
|
||||||
S3L_Vec4 vBackup;
|
S3L_Vec4 vBackup;
|
||||||
|
|
||||||
|
@ -221,6 +222,30 @@ static inline void S3L_vec4Xmat4(S3L_Vec4 *v, S3L_Mat4 *m)
|
||||||
#undef dot
|
#undef dot
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Multiplies two matrices with normalization by S3L_FRACTIONS_PER_UNIT. Result
|
||||||
|
is stored in the first matrix.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void S3L_mat4Xmat4(S3L_Mat4 *m1, S3L_Mat4 *m2)
|
||||||
|
{
|
||||||
|
S3L_Mat4 mat1;
|
||||||
|
|
||||||
|
for (uint16_t row = 0; row < 4; ++row)
|
||||||
|
for (uint16_t col = 0; col < 4; ++col)
|
||||||
|
mat1[col][row] = (*m1)[col][row];
|
||||||
|
|
||||||
|
for (uint16_t row = 0; row < 4; ++row)
|
||||||
|
for (uint16_t col = 0; col < 4; ++col)
|
||||||
|
{
|
||||||
|
(*m1)[col][row] = 0;
|
||||||
|
|
||||||
|
for (uint16_t i = 0; i < 4; ++i)
|
||||||
|
(*m1)[col][row] +=
|
||||||
|
(mat1[i][row] * (*m2)[col][i]) / S3L_FRACTIONS_PER_UNIT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static inline void S3L_makeTranslationMat(S3L_Unit offsetX, S3L_Unit offsetY,
|
static inline void S3L_makeTranslationMat(S3L_Unit offsetX, S3L_Unit offsetY,
|
||||||
S3L_Unit offsetZ, S3L_Mat4 *m)
|
S3L_Unit offsetZ, S3L_Mat4 *m)
|
||||||
{
|
{
|
||||||
|
|
8
test.c
8
test.c
|
@ -8,7 +8,7 @@ void pixelFunc(S3L_PixelInfo *pixel)
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
S3L_Mat4 m;
|
S3L_Mat4 m, m2;
|
||||||
S3L_Vec4 v;
|
S3L_Vec4 v;
|
||||||
|
|
||||||
S3L_initMat4(&m);
|
S3L_initMat4(&m);
|
||||||
|
@ -21,9 +21,11 @@ int main()
|
||||||
S3L_vec4Xmat4(&v,&m);
|
S3L_vec4Xmat4(&v,&m);
|
||||||
S3L_writeVec4(v);
|
S3L_writeVec4(v);
|
||||||
|
|
||||||
S3L_makeTranslationMat(100,200,300,&m);
|
S3L_makeTranslationMat(100,200,300,&m2);
|
||||||
S3L_writeMat4(m);
|
S3L_writeMat4(m2);
|
||||||
|
|
||||||
|
S3L_mat4Xmat4(&m,&m2);
|
||||||
|
S3L_writeMat4(m);
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue