Форум программистов, компьютерный форум CyberForum.ru

Тригонометрия - C++

Восстановить пароль Регистрация
 
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
25.03.2014, 15:23     Тригонометрия #1
Здравствуйте. Есть необходимость работать с тригонометрией, но проблема в том, что углы не стандартны.
Разница в том, что у меня значения углов лежат не в (0;360], а в (0;4096]. sin cos требует радианы, певод в радианы - A*PI/180, где А-угол в градусах, а PI - это число пи. Правильно ли я понимаю, что чтобы преобразовать в радианы мои углы, нужно делить не на 180, а на 2048 - половину от максимального ушла? Если нет, то как правильно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2014, 15:23     Тригонометрия
Посмотрите здесь:

Тригонометрия
тригонометрия C++
тригонометрия
C++ Тригонометрия
Тригонометрия
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
25.03.2014, 15:28     Тригонометрия #2
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Правильно ли я понимаю, что чтобы преобразовать в радианы мои углы, нужно делить не на 180, а на 2048 - половину от максимального ушла?
По ходу да, главное что бы углы тоже были в диапазоне 0 - 4096 потому-что ваши углы с вашим делителем
http://www.cyberforum.ru/cgi-bin/latex.cgi?(A*11.97*PI)/(180*11.97)
преобразуется в привычное глазу
http://www.cyberforum.ru/cgi-bin/latex.cgi?(A*PI)/180
0x10
25.03.2014, 15:30
  #3

Не по теме:

А из каких соображений единицы измерения вдруг нестандартные?

dimcoder
25.03.2014, 15:40
  #4

Не по теме:

Месье знает толк в извращениях.
Хотя мне тоже интересно стало.

zss
Модератор
Эксперт С++
 Аватар для zss
5944 / 5549 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
25.03.2014, 15:41     Тригонометрия #5
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Правильно ли я понимаю, что чтобы преобразовать в радианы мои углы, нужно делить не на 180, а на 2048
Не правильно, 4096 градусов это 11 полных кругов по 360 градусов + 136 градусов.
Так что берем остаток от деления на 360 и умножаем на Pi/180
0x10
25.03.2014, 15:47
  #6

Не по теме:

zss, да мне вот показалось, что у него 4096 - это не в градусах, а полный круг разделен на 4096 сегментов.

Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
25.03.2014, 15:49  [ТС]     Тригонометрия #7
Цитата Сообщение от dimcoder Посмотреть сообщение
главное что бы углы тоже были в диапазоне 0 - 4096
У меня функция выглядит, как
C++
1
SIN=sin((A&4095)*PI/2048);
Так здесь порядок. Спасибо за помощь.

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
Не правильно, 4096 градусов
Вы меня не правильно поняли, как сказали далее
Цитата Сообщение от 0x10 Посмотреть сообщение
да мне вот показалось, что у него 4096 - это не в градусах, а полный круг разделен на 4096 сегментов
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
25.03.2014, 15:51     Тригонометрия #8
Цитата Сообщение от zss Посмотреть сообщение
Не правильно, 4096 градусов это 11 полных кругов + 136 градусов.
Я извиняюсь, в первом посте не 11.97, а 11.37 (опечатался). Если перед переводом в радианы обычным методом самопальные градусы делить на 11.37, то все ок. Ну или (4096*Pi)/(2048), т.к.
(4096*Pi)/(2048) = (360*11.37*Pi)/(180*11.37) = (360*Pi)/(180)
У него просто 4096 градусов - это и есть один круг.
zss
Модератор
Эксперт С++
 Аватар для zss
5944 / 5549 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
25.03.2014, 15:55     Тригонометрия #9
Цитата Сообщение от dimcoder Посмотреть сообщение
4096 градусов - это и есть один круг
Использование нестандартных единиц измерения чревато....
Не надо тогда называть их градусами, а так и писать: A/4096 частей круга.
Сразу видно, что полный круг равен 4096. К радианам приводим деля на 2048 и умножая на pi.
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
25.03.2014, 16:09  [ТС]     Тригонометрия #10
Цитата Сообщение от 0x10 Посмотреть сообщение
А из каких соображений единицы измерения вдруг нестандартные?
Цитата Сообщение от dimcoder Посмотреть сообщение
Месье знает толк в извращениях.
Хотя мне тоже интересно стало.
Таблицы синусов-косинусов. Заполняем массивы SIN и COS из 4096 элементов. Получаем значение -
C++
1
res_sin=SIN[A];
Пытаюсь ускорить графику.

Добавлено через 2 минуты
Цитата Сообщение от zss Посмотреть сообщение
Не надо тогда называть их градусами
Если мне не изменяет память, я не называл свои варианты углов градусами ;-)
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
25.03.2014, 16:11     Тригонометрия #11
Premature optimization = http://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{\forall{evil}}
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
25.03.2014, 16:15  [ТС]     Тригонометрия #12
Цитата Сообщение от zss Посмотреть сообщение
Использование нестандартных единиц измерения чревато
Если не знать в каких единицах задавать угол, то да.

Добавлено через 2 минуты
Цитата Сообщение от 0x10 Посмотреть сообщение
Premature optimization =
Есть что-то быстрее?) Может велосипед уже есть, а я тут фигнёй страдаю?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
25.03.2014, 16:18     Тригонометрия #13
Просто я думаю, что если что-то действительно тормозит, то тригонометрические функции стандартной библиотеки - последнее, что нужно оптимизировать. Когда уже и так все заоптимизировано. Если есть конкретный бенчмарк, который показывает, что именно они отнимают большую часть вычислений - тогда ок. Но это уже другая тема.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2014, 16:29     Тригонометрия
Еще ссылки по теме:

Тригонометрия
тригонометрия
C++ Тригонометрия и обратная польская запись

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
25.03.2014, 16:29  [ТС]     Тригонометрия #14
Цитата Сообщение от 0x10 Посмотреть сообщение
тригонометрические функции стандартной библиотеки - последнее, что нужно оптимизировать
Взятие значения из таблицы по сравнению со стандартной тригонометрией на моём железе в 20 раз быстрее. Тригонометрию в проекте планирую использовать усиленно, так что да, это необходимая мера.

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Retyrn0 Посмотреть сообщение
усиленно
это сотни тысяч - десятки миллионов раз в секунду.

Yandex
Объявления
25.03.2014, 16:29     Тригонометрия
Ответ Создать тему
Опции темы

Текущее время: 16:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru