trigonometry
Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| trigonometry [2026/10/16 09:44] – создано gecko | trigonometry [2026/10/16 09:47] (текущий) – gecko | ||
|---|---|---|---|
| Строка 5: | Строка 5: | ||
| Самый эффективный способ реализации тригонометрии - таблица синусов. На самой консоли ничего вычислять не нужно, вместо этого функция sin просто обращается к таблице по индексу, | Самый эффективный способ реализации тригонометрии - таблица синусов. На самой консоли ничего вычислять не нужно, вместо этого функция sin просто обращается к таблице по индексу, | ||
| - | Пример программы на D, которая генерирует таблицу синусов для 4096 углов (8 KiB): | + | Пример программы на D, которая генерирует таблицу синусов для 4096 углов (8 KiB) в формате Q3.12: |
| <code d> | <code d> | ||
| Строка 32: | Строка 32: | ||
| </ | </ | ||
| - | Функция чтения: | + | Функция чтения |
| + | |||
| + | <code c> | ||
| + | short sin(uint angle) | ||
| + | { | ||
| + | return sinTable[angle & 0xfff]; | ||
| + | } | ||
| + | </ | ||
| Косинус реализуется аналогично, | Косинус реализуется аналогично, | ||
| + | |||
| + | <code c> | ||
| + | #define HPI 0x400 | ||
| + | |||
| + | short cos(uint angle) | ||
| + | { | ||
| + | return sinTable[(angle + HPI) & 0xfff]; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Число PI в Q3.12 будет равно 0x800. | ||
| Точность метода достаточна для представления поворотов в 3D-играх. Чем больше угловая скорость, | Точность метода достаточна для представления поворотов в 3D-играх. Чем больше угловая скорость, | ||
trigonometry.1792143880.txt.gz · Последнее изменение: — gecko
