Важная информация

User Tag List

Страница 1 из 11 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 105

Тема: Что такое тангенс и как с ним боротся?

  1. #1
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    87 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Что такое тангенс и как с ним боротся?

    Речь об ассемблере.
    Как реализовать вычисление (не обязательно реалтайм, можно табличкой) тангенса от произвольного числа (байта)?
    Вот синус-косинус - это легко, табличка размером 256 байт и ок.
    Там всё просто, число диапазона 0 - 0.9 помноженое на 255 и так для всех значений байта (от 0 до 255).
    А как с тангенсом быть?
    Ведь уже к 1/8 круга (в миру = 45 градусов, в асме = 32 градуса) приобретает значение 1 (т.е. по-нашему 255) и дальше стремительно идёт в рост.

    Кто знает как правильно обращатся с тангенсом?
    (и желательно чтоб как с синусом, чтоб в 8 бит).

    Help!

    Опс! Забыл пояснить что не от лени дергаю народ, а поискал по zx-журналам, но что-то не нашёл ничего для асма по теме (для ЯВУ - нашлось)
    Последний раз редактировалось Destr; 20.10.2011 в 22:53.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,557
    Спасибо Благодарностей отдано 
    1,220
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Лучше сразу обрисовать, для каких применений, ибо универсальная вещь всегда более громоздкая, чем заточенная под конкретную цель.

  4. #3
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    87 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Лучше сразу обрисовать, для каких применений, ибо универсальная вещь всегда более громоздкая, чем заточенная под конкретную цель.
    Заточить под конкретную цель я и сам сумею (надеюсь), мне бы разжевал кто общий подход (как генерить, как хранить, какая разрядность процедур умножения/деления и т.д. нужна).
    Т.е. как это всё юзается в демках и прочем, там где точность не нужна (хватает 1/256), а скорость - очень даже.

  5. #4
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,557
    Спасибо Благодарностей отдано 
    1,220
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Заточить под конкретную цель я и сам сумею (надеюсь), мне бы разжевал кто общий подход (как генерить, как хранить, какая разрядность процедур умножения/деления и т.д. нужна).
    Исключительно зависит от целей. Не хватает 8 бит, используйте 16. И т.д. все определяет задача.

  6. #5
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    87 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Исключительно зависит от целей. Не хватает 8 бит, используйте 16. И т.д. все определяет задача.
    Блин, ну давайте так:
    Есть угол (байт, 0-255, это полный круг как принято на спеке).
    Нужен от него тангенс.
    Точность - такая-же как у 256-байтного синуса вполне устроит.
    Что дальше?
    Как его сгенерить? (возможен ли массив в 256 или всё-таки только 512?)
    Как его взять (в смысле выяснить TAN(угол))?
    Последний раз редактировалось Destr; 20.10.2011 в 22:58.

  7. #6
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,557
    Спасибо Благодарностей отдано 
    1,220
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Блин, ну давай так:
    Есть угол (байт, 0-255, это полный круг как принято на спеке).
    Нужен от него тангенс.
    Что дальше?
    Если вы хотите иметь тангенс в виде 8.8 (8 бит целое, 8 бит дробное), и потратить на него 16 бит, то делаете табличку на 512 байт, где и храните готовые тангенсы.

  8. #7
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    87 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А как обычно такую таблицу делают?
    Я пробовал на бейсике, но непонятно на что умножать.
    Т.е. для синуса пойдёт POKE адрес+текущий угол,SIN(PI/128*текущий угол)*255
    А для тангенса на что умножать?

  9. #8
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,557
    Спасибо Благодарностей отдано 
    1,220
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    А как обычно такую таблицу делают?
    Я пробовал на бейсике, но непонятно на что умножать.
    Т.е. для синуса пойдёт POKE адрес+текущий угол,SIN(PI/128*текущий угол)*255
    А для тангенса на что умножать?
    Если тангенс интересует, опять же повторюсь, в формате 8.8, то умножать следует на 256. Таким образом 1 станет равна 256. Двойка - 512 и т.д. Ну, а все, что привысит 255 будет равно 65535.
    Не понятно, зачем это вам надо) В данном случае цель рождает предложение)

  10. #9
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    87 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Не понятно, зачем это вам надо) В данном случае цель рождает предложение)
    Вот это пробую, а там без тангенса никуда http://zxdn.narod.ru/coding/ig5ray3d.htm

    Я уже пробовал без тангенса, изобрёл кучу разной ереси и пару нужных фишек, но задачу не решил...

  11. #10
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проблемы будут в точках 64 и 192 (по понятным причинам). 63/256 даст значение 40. Вполне хватит байта для хранения.

Страница 1 из 11 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Что такое SamRam?
    от ARTi в разделе Несортированное железо
    Ответов: 2
    Последнее: 23.11.2007, 16:20
  2. А вот как вам такое?
    от icebear в разделе Несортированное железо
    Ответов: 2
    Последнее: 13.08.2005, 16:38

Метки этой темы

Ваши права

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