Body #24
17 января 2001

Mатематика - как вычисляется синyс по таблице.

<b>Mатематика</b> - как вычисляется синyс по
таблице.
■························[Математика]·························■

Q:  Объясните  мне  пожалуйста  смысл,  как вычисляется синус по
таблице.    Вроде,    как    я    понял,   таблица   вычисляется
sint=round(sin(i/256)*127+128),  тогда  как  например  посчитать
синус  30rp., то есть sin(pi/6)? И вообще, что это за магические
цифры 127,128?

A: [Alexander Shulepov 2:5020/1737.25]

Начнем  с  азов.  В круге y нас 360 градусов, или 2*Pi. Но число
360  нам несколько не удобно, так как если мы будем использовать
precalculate  (то  есть создание массива со значениями sin/cos в
каждом  из 360 градусов) нам придется отслеживать ситуации когда
угол  синус/косинус,  которого  мы  хотим  найти  находится  вне
промежутка  0..360  градусов  (на самом деле 0..359, так как 0 и
360  градусов  -  это один и тот же угол) и пpиобpазовывать этот
угол  в соответствующий ему, лежащий в указанном промежутке. Как
нам  этого  избежать?  Да  очень  просто, поделим круг не на 360
частей, а на 256, тогда снимается проблема отслеживания значения
угла.  Нам  достатючно  использовать  тип  char для переменной в
которой   хранится   значение  угла.  Все  проверки  выполняются
автоматически  и  не  жрут  ресурсов. Формулы для преобразований
выводятся  элементарно.  Теперь насчет магических чисел... Почти
везде  стараются  заменить числа с плавающей запятой, на числа с
фиксированной точкой. Если fixed point y нас x.8, то все числа с
плавающей точкой умножаются на 256. В примере с водичкой, массив
высот  был типа unsigned char, то есть максимальная высота равна
255.  Вют  отсюда  и  берутся  числа 127, 128. 128 - это уровень
спокойной воды, а 127 есть амплитуда колебаний волн. Вот в итоге
и получается формула: sintable[k]=sin(2*PI*k/256)*127+128;




Другие статьи номера:

От авторов - пpоцесс создания Body снова пошел полным ходом.

Warez - KnightArena, Yurec, Chaser, OpenSafe, SuperTetris, X-Files #1-#2, Boss2, CSC DV.

MinskZxNet - Hовый год начался с большого количества пойнтовок, на моей памяти их было уже 3.

Mатематика - как вычисляется синyс по таблице.

RestInPain - Пpоект Ellipse'ов "Михалыч" тоpмозится, по словам Midnight'а, отсутствием гpафики, котоpую обещал наpисовать Wrecker^smk.

Hint - как трахнуть пилота в Sea Quest.

Demo Scene - Commodore 64 - сцена, софт, традиции, термины.

Kто они? - Минские скинхеды круче всех!

Клинмозгов - Cannibal Corpse 1991 Зарезанный при рождении.

Информация - Зам.главного редактора,оформление,графика.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Реклама - Реклама и объявления.
FreeNews - Известный 4-х килобайтный спектрумовский кодер :) SerzhSoft пропил свой Скорпион.
Посмеемся - программа обязательного тестирования 11-х классов по предмету Информатика (вопросы 15-20).
Marazm - Опять брежу :) История человека (человека ли ?!!), который прожил всего один день...
Обо всём - подробный отчет с Funtop'98 от MMA (глава 5-6).

В этот день...   20 апреля