Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
TPosition3.h
Go to the documentation of this file.
1#ifndef TPOSITION3_H
2#define TPOSITION3_H
3
4#include "dolphin/mtx.h"
6#include "JSystem/JGeometry.h"
7
8namespace JGeometry {
9
10template <typename T>
11struct SMatrix34C {
12 T data[3][4];
13};
14
15template <>
16struct SMatrix34C<f32> {
17 f32 data[3][4];
18
19 typedef f32 ArrType[4];
20 void set(const ArrType* src) {
22 }
23
24 operator ArrType*() { return data; }
25 operator const ArrType*() const { return data; }
26};
27
28template <typename T>
29struct SMatrix33C {
30 T data[3][3];
31
32 inline T& ref(int i, int j) {
33 return data[i][j];
34 }
35
36 inline T at(int i, int j) const {
37 return data[i][j];
38 }
39
40 inline void set(T param_1, T param_2, T param_3, T param_4, T param_5,
41 T param_6, T param_7, T param_8, T param_9) {
42 ref(0,0) = param_1;
43 ref(0,1) = param_2;
44 ref(0,2) = param_3;
45 ref(1,0) = param_4;
46 ref(1,1) = param_5;
47 ref(1,2) = param_6;
48 ref(2,0) = param_7;
49 ref(2,1) = param_8;
50 ref(2,2) = param_9;
51 }
52};
53
54template <typename T>
55struct TMatrix34 : public T {
56 void identity() { MTXIdentity(this->data); }
57};
58
59template <typename T>
60struct TRotation3 : public T {};
61
62template<typename T>
63struct TRotation3<SMatrix33C<T> > : public SMatrix33C<T> {
64 inline void getEulerXYZ(TVec3<T>* param_1) const {
65 if (this->at(2, 0) - TUtil<T>::one() >= -TUtil<T>::epsilon()) {
66 param_1->set(TUtil<T>::atan2(-this->at(0, 1), this->at(1, 1)), -TUtil<T>::halfPI(), 0.0);
67 } else {
68 if (this->at(2, 0) + TUtil<T>::one() <= TUtil<T>::epsilon()) {
69 param_1->set(TUtil<T>::atan2(this->at(0, 1), this->at(1, 1)), TUtil<T>::halfPI(), 0.0);
70 } else {
71 param_1->x = TUtil<T>::atan2(this->at(2, 1), this->at(2, 2));
72 param_1->z = TUtil<T>::atan2(this->at(1, 0), this->at(0, 0));
73 param_1->y = TUtil<T>::asin(-this->at(2, 0));
74 }
75 }
76 }
77};
78
79template <typename T>
80struct TPosition3 : public T {
82};
83
85
86} // namespace JGeometry
87
88#endif
const void * src
Definition __os.h:116
float f32
Definition types.h:25
int i
Definition e_pow.c:165
int j
Definition e_pow.c:165
Definition JGeometry.h:8
TPosition3< TMatrix34< SMatrix34C< f32 > > > TPosition3f32
Definition TPosition3.h:84
void gekko_ps_copy12(__REGISTER void *dst, __REGISTER const void *src)
Definition JMath.h:137
Definition TPosition3.h:29
T data[3][3]
Definition TPosition3.h:30
void set(T param_1, T param_2, T param_3, T param_4, T param_5, T param_6, T param_7, T param_8, T param_9)
Definition TPosition3.h:40
T & ref(int i, int j)
Definition TPosition3.h:32
T at(int i, int j) const
Definition TPosition3.h:36
void set(const ArrType *src)
Definition TPosition3.h:20
Definition TPosition3.h:11
T data[3][4]
Definition TPosition3.h:12
Definition TPosition3.h:55
void identity()
Definition TPosition3.h:56
Definition TPosition3.h:80
TPosition3()
Definition TPosition3.h:81
void getEulerXYZ(TVec3< T > *param_1) const
Definition TPosition3.h:64
Definition TPosition3.h:60
Definition JGeometry.h:11
Definition JGeometry.h:70
T x
Definition JGeometry.h:71
void set(const TVec3 &other)
Definition JGeometry.h:75
T z
Definition JGeometry.h:73
T y
Definition JGeometry.h:72