Mercurial > mm7
comparison VectorTypes.cpp @ 1504:ff1867836af5
Cleanup of VectorTypes.
author | yoctozepto |
---|---|
date | Mon, 02 Sep 2013 12:46:32 +0200 |
parents | |
children | 4055b09160ae |
comparison
equal
deleted
inserted
replaced
1503:4ce525fe9ea9 | 1504:ff1867836af5 |
---|---|
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 } |