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 }