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

User Tag List

Страница 2 из 11 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 105

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

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

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Проблемы будут в точках 64 и 192 (по понятным причинам). 63/256 даст значение 40. Вполне хватит байта для хранения.
    Да, это я уже выяснил в ходе экспериментов
    В этих точках один из катетов нулевой, т.е. исскуственно подставлять 1 (чтоб стал как тот что длинный).
    Или любое из соседних значений (исскуственно заменяя угол ближним, чтоб деления на 0 не было).
    На бейсике я это всё понимаю, а вот в асм перетащить не могу (ну не калькулятор ведь подключать пзушный или самому подобные дела громоздить).
    Подскажите чуть-чуть как это в асме сделать чтоб решалось так-же как с синусом. Ну типа.
    LD L,угол
    LD H,старший байт таблицы тангенсов
    LD A,(HL); А=TAN(угол)

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

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Вот это пробую, а там без тангенса никуда http://zxdn.narod.ru/coding/ig5ray3d.htm

    Я уже пробовал без тангенса, изобрёл кучу разной ереси и пару нужных фишек, но задачу не решил...
    Там вроде конкретно написано, как:
    Код:
     Назовём вертикальное расстояние до сле-
    дующей  точки Ya, горизонтальное Xa. Будем
    искать все  горизонтальные пересечения. Ya
    найти  легко - это высота клетки (64 в на-
    шем случае). Xa можно найти по формуле Xa=
    =64/tan(угол луча). Разумеется, для Speccy
    тангенс каждый раз считать накладно,но мо-
    жно  посчитать табличку для всех возможных
    углов заранее. Для поиска вертикальных пе-
    ресечений Xa равен ширине клетки, Ya = 64*
    *tan(угол луча).

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

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Подскажите чуть-чуть как это в асме сделать чтоб решалось так-же как с синусом. Ну типа.
    LD L,угол
    LD H,старший байт таблицы тангенсов
    LD A,(HL); А=TAN(угол)
    Ну ты уже написал. В чем проблема-то?

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

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Ну ты уже написал. В чем проблема-то?
    Проблема написать 8-ми битную табличку (я сумел только 16 бит).
    Чтоб процедура вида HL=H*L могла в дальнейшем работать.
    А не HLDE=A*DE например юзать.
    Вот и ломаю голову как извернутся (иначе летит всё нафик, ибо громоздко и соотв. медленно.)

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

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Проблема написать 8-ми битную табличку (я сумел только 16 бит).
    Чтоб процедура вида HL=H*L могла в дальнейшем работать.
    Не понял. У тебя сложности с генерацией таблицы? Или доступом к ней?

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

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Не понял. У тебя сложности с генерацией таблицы? Или доступом к ней?
    Бинго!
    Оба вопроса в точку!

    Хотелось бы чтоб табличка в 256 байт и чтоб операции с ней не превращались в IEEE.

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

  8. #17
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Хотелось бы чтоб табличка в 256 байт и чтоб операции с ней не превращались в IEEE.
    так просто оно в интервал 0..255 не влезет. Куча первых значений будут нулевыми.
    может хранить как-то хитро? Значения в ячейках 0..63 сдвинутыми влево на 3 бита, 64..127 на два, 128..191 на один, а 192..255 не сдвинутыми. И после выполнения умножения результат сдвигать вправо на сколько надо.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

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

    По умолчанию

    Цитата Сообщение от Eltaron Посмотреть сообщение
    так просто оно в интервал 0..255 не влезет. Куча первых значений будут нулевыми.
    может хранить как-то хитро? Значения в ячейках 0..63 сдвинутыми влево на 3 бита, 64..127 на два, 128..191 на один, а 192..255 не сдвинутыми. И после выполнения умножения результат сдвигать вправо на сколько надо.
    Я примерно так затык и понял.
    Только подумал сделать по другому.
    Составить тангес до тех пор пока он в 1 не превратится и дальше уже заморачиватся при вычислениях где знак поменять, где операнды местами перекинуть, где вообще нафик NEG глобальный всему и вся.

    Но это по-моему как-то того...
    Прошлый век что-ли...
    Этим пусть Женя999 (или кто там ещё на бейсике? ALKO?) занимается.
    Им будет интересно, а я как-то уже поиграл в 2+2 на 24 листа, хочу научится быстрому кодингу.

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

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    хочу научится быстрому кодингу.
    Чтобы научиться быстрому кодингу нужно:
    1) Хорошо представлять себе весь алгоритм в целом, причем не только математическую модель, но и всю суть происходящих процессов, потому что тогда, и только тогда вы можете крутить и вертеть им, как захотите, редуцируя, меняя, и т.д.
    2) Находить баланс между скростью, точностью и универсальностью используемых математических функций. Ибо, любой универсализм ведет к понижению скорости.
    3) Ну и хорошо знать ассемблер)

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Чтобы научиться быстрому кодингу нужно:
    1) Хорошо представлять себе весь алгоритм в целом, причем не только математическую модель, но и всю суть происходящих процессов, потому что тогда, и только тогда вы можете крутить и вертеть им, как захотите, редуцируя, меняя, и т.д.
    2) Находить баланс между скростью, точностью и универсальностью используемых математических функций. Ибо, любой универсализм ведет к понижению скорости.
    3) Ну и хорошо знать ассемблер)
    Пункт 1 сразу отпадает, ибо я только ПЫТАЮСЬ этот алгоритм КАК-ЛИБО реализовать.
    Пункт 2 вытекает из П.1, т.е. до оптимизации ещё не дошло (сперва надо заставить работать, потом прочувтсвовать и уже потом оптимизировать)
    Пункт 3 - это вообще выше всяких похвал! Не одолжите-ли на время свой ЛАМОметр?

    В общем хотел примеры и советы от людей которые решали подобные проблемы, а опять флуд у нас получился
    (ну почти флуд)

Страница 2 из 11 ПерваяПервая 123456 ... ПоследняяПоследняя

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

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

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

Похожие темы

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

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

Ваши права

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