diff options
| author | spicyjpeg <thatspicyjpeg@gmail.com> | 2022-10-19 15:09:07 +0200 |
|---|---|---|
| committer | spicyjpeg <thatspicyjpeg@gmail.com> | 2022-10-19 15:09:07 +0200 |
| commit | 982df5fe197c4db2be4bffe59a05c837b7508365 (patch) | |
| tree | e5ddb393fca8280920724f3aa5ecec3261058fa4 /libpsn00b/psxgte/matrix.c | |
| parent | 783014e53254fe17102a34c30120eeabf5227a47 (diff) | |
| download | psn00bsdk-982df5fe197c4db2be4bffe59a05c837b7508365.tar.gz | |
Initial psxgte cleanup
Diffstat (limited to 'libpsn00b/psxgte/matrix.c')
| -rw-r--r-- | libpsn00b/psxgte/matrix.c | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/libpsn00b/psxgte/matrix.c b/libpsn00b/psxgte/matrix.c index b4dea12..805fd1b 100644 --- a/libpsn00b/psxgte/matrix.c +++ b/libpsn00b/psxgte/matrix.c @@ -1,7 +1,6 @@ #include <psxgte.h> MATRIX *RotMatrix(SVECTOR *r, MATRIX *m) { - short s[3],c[3]; MATRIX tm[3]; @@ -24,22 +23,47 @@ MATRIX *RotMatrix(SVECTOR *r, MATRIX *m) { tm[1].m[2][0] = 0; tm[1].m[2][1] = 0; tm[1].m[2][2] = ONE; PushMatrix(); - MulMatrix0( m, &tm[0], &tm[2] ); MulMatrix0( &tm[2], &tm[1], m ); - PopMatrix(); return m; +} + +MATRIX *HiRotMatrix(VECTOR *r, MATRIX *m) { + short s[3],c[3]; + MATRIX tm[3]; + + s[0] = hisin(r->vx); s[1] = hisin(r->vy); s[2] = hisin(r->vz); + c[0] = hicos(r->vx); c[1] = hicos(r->vy); c[2] = hicos(r->vz); + // mX + m->m[0][0] = ONE; m->m[0][1] = 0; m->m[0][2] = 0; + m->m[1][0] = 0; m->m[1][1] = c[0]; m->m[1][2] = -s[0]; + m->m[2][0] = 0; m->m[2][1] = s[0]; m->m[2][2] = c[0]; + + // mY + tm[0].m[0][0] = c[1]; tm[0].m[0][1] = 0; tm[0].m[0][2] = s[1]; + tm[0].m[1][0] = 0; tm[0].m[1][1] = ONE; tm[0].m[1][2] = 0; + tm[0].m[2][0] = -s[1]; tm[0].m[2][1] = 0; tm[0].m[2][2] = c[1]; + + // mZ + tm[1].m[0][0] = c[2]; tm[1].m[0][1] = -s[2]; tm[1].m[0][2] = 0; + tm[1].m[1][0] = s[2]; tm[1].m[1][1] = c[2]; tm[1].m[1][2] = 0; + tm[1].m[2][0] = 0; tm[1].m[2][1] = 0; tm[1].m[2][2] = ONE; + + PushMatrix(); + MulMatrix0( m, &tm[0], &tm[2] ); + MulMatrix0( &tm[2], &tm[1], m ); + PopMatrix(); + + return m; } MATRIX *TransMatrix(MATRIX *m, VECTOR *r) { - m->t[0] = r->vx; m->t[1] = r->vy; m->t[2] = r->vz; return m; - } |
