1504
|
1 #include "mm7_data.h"
|
|
2
|
|
3 //----- (0044C362) --------------------------------------------------------
|
|
4 void Vec3_int_::Normalize_float()
|
|
5 {
|
|
6 //Vec3_int_ *v1; // esi@1
|
|
7 double v2; // st6@1
|
|
8 float v3; // ST20_4@1
|
|
9 double v4; // st5@1
|
|
10 float v5; // ST18_4@1
|
|
11 double v6; // st4@1
|
|
12 float v7; // ST14_4@1
|
|
13 float v8; // ST24_4@1
|
|
14 float v9; // ST20_4@1
|
|
15 double v10; // ST0C_8@1
|
|
16 float v11; // ST18_4@1
|
|
17 double v12; // ST0C_8@1
|
|
18 float v13; // ST14_4@1
|
|
19 double v14; // ST0C_8@1
|
|
20
|
|
21 assert(false);
|
|
22 //v1 = this;
|
|
23 v2 = (double)this->x * 0.000015258789;
|
|
24 v3 = v2;
|
|
25 v4 = (double)this->y * 0.000015258789;
|
|
26 v5 = v4;
|
|
27 v6 = (double)this->z * 0.000015258789;
|
|
28 v7 = v6;
|
|
29 v8 = 1.0 / sqrt(v6 * v6 + v4 * v4 + v2 * v2);
|
|
30 v9 = v8 * v3 * 65536.0;
|
|
31 v10 = v9 + 6.7553994e15;
|
|
32 this->x = LODWORD(v10);
|
|
33 v11 = v8 * v5 * 65536.0;
|
|
34 v12 = v11 + 6.7553994e15;
|
|
35 this->y = LODWORD(v12);
|
|
36 v13 = v8 * v7 * 65536.0;
|
|
37 v14 = v13 + 6.7553994e15;
|
|
38 this->z = LODWORD(v14);
|
|
39 }
|
|
40
|
|
41 //----- (0043AA99) --------------------------------------------------------
|
|
42 void __fastcall Vec3_int_::Rotate(int sDepth, int sRotY, int sRotX, Vec3_int_ v, int *outx, int *outy, int *outz)
|
|
43 {
|
|
44 float cosf_x = cosf(3.14159265f * sRotX / 1024.0f),
|
|
45 sinf_x = sinf(3.14159265f * sRotX / 1024.0f),
|
|
46 cosf_y = cosf(3.14159265f * sRotY / 1024.0f),
|
|
47 sinf_y = sinf(3.14159265f * sRotY / 1024.0f);
|
|
48
|
|
49 *outx = v.x + ((unsigned __int64)(sinf_y * (signed __int64)((unsigned __int64)(cosf_x * (signed __int64)sDepth)>> 16)));
|
|
50 *outy = v.y + ((unsigned __int64)(cosf_y * (signed __int64)((unsigned __int64)(cosf_x * (signed __int64)sDepth)>> 16)));
|
|
51 *outz = v.z + ((unsigned __int64)(sinf_x * (signed __int64)sDepth) >> 16);
|
|
52 }
|
|
53
|
|
54 //----- (0043AB61) --------------------------------------------------------
|
|
55 void Vec3_int_::Normalize(int *x, int *y, int *z)
|
|
56 {
|
|
57 *x *= 65536 / (integer_sqrt(*y * *y + *z * *z + *x * *x) | 1);
|
|
58 *y *= 65536 / (integer_sqrt(*y * *y + *z * *z + *x * *x) | 1);
|
|
59 *z *= 65536 / (integer_sqrt(*y * *y + *z * *z + *x * *x) | 1);
|
|
60 }
|