HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Помогте разобрать код
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 34

Рейтинг



Помогте разобрать код

C++ Source Code:
1
struct struct_a2
2
{
3
  float float0;
4
  float float4;
5
  float float8;
6
  float float12;
7
  float float16;
8
  float float20;
9
  float float24;
10
  float float28;
11
  float float32;
12
  float float36;
13
  float float40;
14
};
15
 
16
struct struct_a2_1
17
{
18
  float float0;
19
  float float4;
20
  float float8;
21
};
22
 
23
struct struct_test2
24
{
25
  float float0;
26
  float float4;
27
  float float8;
28
  float float12;
29
};
30
 
31
struct struct_a2_2
32
{
33
  float float0;
34
  float float4;
35
  float float8;
36
};
37
 
38
int sub_4066B0(struct_a2 *a1, struct_a2_1 *a2)
39
{
40
  double v2; // st7@1
41
  //  __int16 v3; // fps@1
42
  long double v4; // st6@1
43
  bool v5; // c0@1
44
  char v6; // c2@1
45
  bool v7; // c3@1
46
  float v9; // [sp+0h] [bp-24h]@1
47
  float v10; // [sp+4h] [bp-20h]@1
48
  float v11; // [sp+Ch] [bp-18h]@1
49
  float v12; // [sp+10h] [bp-14h]@1
50
  float v13; // [sp+14h] [bp-10h]@1
51
  float v14; // [sp+20h] [bp-4h]@1
52
 
53
  v2 = a1->float32;
54
  v10 = a1->float16;
55
  v9 = a1->float0;
56
  v11 = a1->float4;
57
  v12 = a1->float20;
58
  v13 = a1->float36;
59
  v14 = a1->float40;
60
  v4 = sqrt(v10 * v10 + v9 * v9);
61
  //  UNDEF(v3);
62
  v5 = v4 < 0.001;
63
  v6 = 0;
64
  v7 = v4 == 0.001;
65
 
66
  if ( /*v3 &*/ 0x4100 )
67
  {
68
    a2->float8 = 0;
69
    a2->float4 = atan2(v12, -v11) * 57.29578;
70
    a2->float0 = atan2(v4, -v2) * 57.29578;
71
  }
72
  else
73
  {
74
    a2->float4 = atan2(v9, v10) * 57.29578;
75
    a2->float0 = atan2(v4, -v2) * 57.29578;
76
    a2->float8 = atan2(v14, v13) * 57.29578;
77
  }
78
  return 1;
79
}
80
 
81
int sub_407200(struct_test2 *a1, struct_a2 *a2)
82
{
83
  double v3; // st5@1
84
  double v4; // st4@1
85
  double v5; // st7@1
86
  double v6; // st7@1
87
  double v7; // st6@1
88
  double v8; // st7@1
89
  double v9; // st6@1
90
  double v10; // st5@1
91
  double v11; // st4@1
92
  double v12; // st7@1
93
  double v13; // st7@1
94
  double v14; // st7@1
95
  double v15; // st6@1
96
 
97
  v3 = a1->float4 * a1->float4;
98
  v4 = a1->float8 * a1->float8;
99
  a2->float0 = 1.0 - (v3 + v3) - (v4 + v4);
100
  v5 = a1->float8 * a1->float12 + a1->float0 * a1->float4;
101
  a2->float16 = v5 + v5;
102
  v6 = a1->float8 * a1->float0;
103
  v7 = a1->float12 * a1->float4;
104
  a2->float32 = v6 + v6 - (v7 + v7);
105
  v8 = a1->float0 * a1->float4;
106
  v9 = a1->float8 * a1->float12;
107
  a2->float4 = v8 + v8 - (v9 + v9);
108
  v10 = a1->float0 * a1->float0;
109
  v11 = a1->float8 * a1->float8;
110
  a2->float20 = 1.0 - (v10 + v10) - (v11 + v11);
111
  v12 = a1->float8 * a1->float4 + a1->float0 * a1->float12;
112
  a2->float36 = v12 + v12;
113
  v13 = a1->float8 * a1->float0 + a1->float12 * a1->float4;
114
  a2->float8 = v13 + v13;
115
  v14 = a1->float8 * a1->float4;
116
  v15 = a1->float0 * a1->float12;
117
  a2->float24 = v14 + v14 - (v15 + v15);
118
  a2->float40 = 1.0
119
  - (a1->float0 * a1->float0
120
  + a1->float0 * a1->float0)
121
  - (a1->float4 * a1->float4
122
  + a1->float4 * a1->float4);
123
  return 1;
124
}
125
 
126
 
127
int sub_407400(struct_test2 *a1, struct_a2_2 *a2)
128
{
129
  int result; // eax@1
130
  double v3; // st7@1
131
  double v4; // st6@1
132
  char v5; // [sp+4h] [bp-30h]@1
133
 
134
  sub_407200(a1, (struct_a2 *)&v5);
135
  result = sub_4066B0((struct_a2 *)&v5, (struct_a2_1 *)a2);
136
  v3 = a2->float4 * 0.017453292;
137
  v4 = a2->float0 * 0.017453292;
138
  a2->float0 = a2->float8 * 0.017453292;
139
  a2->float4 = v4;
140
  a2->float8 = v3;
141
  return result;
142
}


Учитывая, что у меня с тригонометрией всегда было плохо, прошу помочь и объяснить, что делает этот код.

Насколько я понимаю, это как-то связано с углами Эйлера и матрицей поворота.

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

Сообщить модератору | | IP: Записан
Сообщение: 84389

Старое сообщение 13-10-2011 21:57
- За что?
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



Награды
 
[1 награда]


fire64 а ты не пробовал компилить и дебажить?

Сообщить модератору | | IP: Записан
Сообщение: 84391

Старое сообщение 14-10-2011 01:12
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32263
Нанёс повреждений: 392 ед.

Рейтинг



fire64 это откуда вообще?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 84394

Старое сообщение 14-10-2011 06:13
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 34

Рейтинг



Это из декомпилированного декомпилятора.

Так, разобрался с sub_4066B0, это MatrixAngles

А насчет двух остальных, пока не знаю.

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

Сообщить модератору | | IP: Записан
Сообщение: 84397

Старое сообщение 14-10-2011 08:30
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32263
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
fire64 писал:
Это из декомпилированного декомпилятора.

Ктож декомпиляторы декомпилирует?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 84398

Старое сообщение 14-10-2011 09:56
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 34

Рейтинг



Разобрался, это функция преобразования кватерниона в углы Эйлера.

В SourceEngine именуется QuaternionAngles,
А в Java декомпиляторе, Quaternion2Euler

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

Сообщить модератору | | IP: Записан
Сообщение: 84401

Старое сообщение 14-10-2011 10:59
- За что?
Тема закрыта XaeroX 14-10-2011 в 11:07
Временная зона GMT. Текущее время 19:01. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Помогте разобрать код
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024