Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 01 июн 2015, 08:28

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Помощь по библиотеке "XS"
СообщениеДобавлено: 26 авг 2011, 19:03 
Не в сети
Аватара пользователя
Зарегистрирован:
24 янв 2011, 03:32
Последнее посещение:
30 май 2015, 17:11
Сообщения: 674
Откуда: Некрополь у Кремлёвской стены
Собственно вопрос: как можно понять 2е строчки?
Цитата:
new i = _:x; // ?
i = 0x5f375a84 - (i >> 1); // 0x5f375a84 - ячейка памяти ? О_о ?
 код


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: Помощь по библиотеке "XS"
СообщениеДобавлено: 27 авг 2011, 05:44 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
01 июн 2015, 02:09
Сообщения: 4973
Это приближенное извлечение квадратного корня из числа. Алгоритм, я думаю, можно нагуглить. А по коду:
Код:
new i = _:x;
_: - это приведение типа к целому числу, так же как Float: - приведение к числу с плавающей запятой. Все данные в АМХХ это 4х байтовые числа. А тэг - это всего лишь указание компилятору как понимать эти 4 байта. Да и то, он при этом всё равно считает их всё теми же четырьмя байтами. И тэг влияет лишь на проверку присвоений и передачи параметров - выдается предупреждение (warning) при несоответствии.
Т.е. в i у нас оказывается бинарная форма записи дробного числа.
Которое мы потом сдвигаем на один бит:
Код:
(i >> 1)
и вычитаем из "магического" числа:
Код:
i = 0x5f375a84 - (i >> 1);
0x5f375a84 это всего лишь число в шестнадцатеричной форме записи (об этом компилятору сообщает 0x в начале).
0x5f375a84 = 1597463172 (десятеричное).

Про бинарное представление дробного числа можно почитать, как обычно, в гугле, ну или тут: http://en.wikipedia.org/wiki/Floating_point


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: Помощь по библиотеке "XS"
СообщениеДобавлено: 27 авг 2011, 11:39 
Не в сети
Аватара пользователя
Зарегистрирован:
24 янв 2011, 03:32
Последнее посещение:
30 май 2015, 17:11
Сообщения: 674
Откуда: Некрополь у Кремлёвской стены
Lev
Доходчиво благодарствую. Но как можно расценивать "магическое число" (1597463172). Почему именно оно ?


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: Помощь по библиотеке "XS"
СообщениеДобавлено: 27 авг 2011, 15:42 
Не в сети
Аватара пользователя
Зарегистрирован:
01 июн 2010, 23:25
Последнее посещение:
01 июн 2015, 01:03
Сообщения: 969
Выбрано исходя из малой погрешности вычисления корня.
http://jheriko-rtw.blogspot.com/2009/04 ... -fast.html

_________________
Изображение


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: Yahoo [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB