Инструменты пользователя

Инструменты сайта


trigonometry

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

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

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki