Loading [MathJax]/extensions/tex2jax.js
Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
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 void identity() { MTXIdentity(data); }
20
21 typedef f32 ArrType[4];
22 void set(const ArrType* src) {
24 }
25
26 operator ArrType*() { return data; }
27 operator const ArrType*() const { return data; }
28};
29
30template <typename T>
31struct SMatrix33C {
32 T data[3][3];
33
34 inline T& ref(int i, int j) {
35 return data[i][j];
36 }
37
38 inline T at(int i, int j) const {
39 return data[i][j];
40 }
41
42 inline void set(T param_1, T param_2, T param_3, T param_4, T param_5,
43 T param_6, T param_7, T param_8, T param_9) {
44 ref(0,0) = param_1;
45 ref(0,1) = param_2;
46 ref(0,2) = param_3;
47 ref(1,0) = param_4;
48 ref(1,1) = param_5;
49 ref(1,2) = param_6;
50 ref(2,0) = param_7;
51 ref(2,1) = param_8;
52 ref(2,2) = param_9;
53 }
54};
55
56template <typename T>
57struct TMatrix34 : public T {};
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 (at(2, 0) - TUtil<T>::one() >= -TUtil<T>::epsilon()) {
66 param_1->set(TUtil<T>::atan2(-at(0, 1), at(1, 1)), -TUtil<T>::halfPI(), 0.0);
67 } else {
68 if (at(2, 0) + TUtil<T>::one() <= TUtil<T>::epsilon()) {
69 param_1->set(TUtil<T>::atan2(at(0, 1), at(1, 1)), TUtil<T>::halfPI(), 0.0);
70 } else {
71 param_1->x = TUtil<T>::atan2(at(2, 1), at(2, 2));
72 param_1->z = TUtil<T>::atan2(at(1, 0), at(0, 0));
73 param_1->y = TUtil<T>::asin(-at(2, 0));
74 }
75 }
76 }
77};
78
79template <typename T>
80struct TPosition3 : public T {};
81
83
84} // namespace JGeometry
85
86#endif
const void * src
Definition __os.h:116
int i
Definition e_pow.c:165
int j
Definition e_pow.c:165
Definition JGeometry.h:8
TPosition3< TRotation3< TMatrix34< SMatrix34C< f32 > > > > TPosition3f32
Definition TPosition3.h:82
void gekko_ps_copy12(register void *dst, register const void *src)
Definition JMath.h:116
Definition TPosition3.h:31
T data[3][3]
Definition TPosition3.h:32
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:42
T & ref(int i, int j)
Definition TPosition3.h:34
T at(int i, int j) const
Definition TPosition3.h:38
void identity()
Definition TPosition3.h:19
void set(const ArrType *src)
Definition TPosition3.h:22
Definition TPosition3.h:11
T data[3][4]
Definition TPosition3.h:12
Definition TPosition3.h:57
Definition TPosition3.h:80
void getEulerXYZ(TVec3< T > *param_1) const
Definition TPosition3.h:64
Definition TPosition3.h:60
Definition JGeometry.h:11
Definition JGeometry.h:56
T x
Definition JGeometry.h:57
void set(const TVec3 &other)
Definition JGeometry.h:61
T z
Definition JGeometry.h:59
T y
Definition JGeometry.h:58
float f32
Definition types.h:22