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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 18

Тема: Быстрая заливка треугольников...на синклер Бэйсике

  1. #1
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Быстрая заливка треугольников...на синклер Бэйсике

    Я так понимаю, есть два варианта рисования треугольника с заливкой:
    Проверять границы по Point (этот алгоритм у меня есть)
    Рисовать рядок линий с изменяемым значением Plot и длины Draw (такого у меня нет. С равнобедренным проще. А рисовать по заданным трëм вершинам сложновато).

    В теории, какой из вариантов быстрее? Склоняюсь к версии, что второй, так как первый варик более универсален, и может сгодиться и для окружностей. Универсальность, значит слоупочность.

    По второму варику не могу сообразить математически. Там походу ещë нужно как-то последовательность вершин отсортировать, в зависимости от положения бëдер. Сложновато...

    - - - Добавлено - - -

    ещë недостаток заливки по проверке границ, всегда будет виден wireframe (при заливке диззерингом, например). Некрасиво. Так что, так или иначе, нужно рисовать триангл с ходу, массивом линий.

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

  3. #2
    Veteran Аватар для Bedazzle
    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    221
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    115 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    ещë недостаток заливки по проверке границ, всегда будет виден wireframe (при заливке диззерингом, например).
    Нарисовать тремя линиями треугольник.
    Залить.
    Стереть тремя линиями треугольник.
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  4. #3
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для начала можно упростить задачу: есть одна верхняя точка и две нижние с одинаковой координатой Y, но с произвольной координатой X. Проведём две линии из верхней точки в нижние. Нужно рисовать обе линии одновременно, так чтобы были известны обе точки на одной горизонтальной линии (которую мы и заполняем). То есть нужно реализовать алгоритм рисования линии (тот-же Брезенхем), но чтобы он работал с двумя линиями одновременно.

  5. #4
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    Нарисовать тремя линиями треугольник.
    Залить.
    Стереть тремя линиями треугольник.
    если по Over 1, то всë равно следы останутся.

    - - - Добавлено - - -

    Цитата Сообщение от b2m Посмотреть сообщение
    Для начала можно упростить задачу: есть одна верхняя точка и две нижние с одинаковой координатой Y, но с произвольной координатой X. Проведём две линии из верхней точки в нижние. Нужно рисовать обе линии одновременно, так чтобы были известны обе точки на одной горизонтальной линии (которую мы и заполняем). То есть нужно реализовать алгоритм рисования линии (тот-же Брезенхем), но чтобы он работал с двумя линиями одновременно.
    я тоже теоретически думал о том, чтоб поделить треугольник на два с одним основанием... но всë равно дальше теории не осиливаю. В матеше нуб.

  6. #5
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    примерно так и заливается пол в Eidolon
    ну там трапеции, да с прямым основанием. Мне же нужна геометрия погибче. И желательно с возможностью заливки диззерингом в том числе.

  7. #6
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,042
    Спасибо Благодарностей отдано 
    934
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    122 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот примитивнейшая заливка на бейсике:
    950..970 сортировка вершин по игреку
    980 подгонка, чтобы первые два игрека были целые и не равны между собой
    Вложения Вложения
    • Тип файла: zip Trig.zip (617 байт, Просмотров: 39)

  8. Эти 2 пользователя(ей) поблагодарили Reobne за это полезное сообщение:

    ALKO (26.06.2023), Oleg N. Cher (26.06.2023)

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

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    нужно рисовать триангл с ходу, массивом линий.
    Вторая половина статьи посвящена заливке полигона
    А тут заливка конкретно треугольника с примером на СИ - на бейсике почти так-же.
    На спеке хорошо заливать побайтно, только понадобится несколько процедур (для линии целиком в байт попадающей, для линии начало и конец которой в соседних байтах и для линии между началом и концом от 1 до 31 байта). Хорошо юзается для этого табличка, но на бейсике наверное быстрей будет применять математику.

  10. #8
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Процедурка, подогнанная от Reobne - по кайфу аще.

  11. Этот пользователь поблагодарил ALKO за это полезное сообщение:

    Reobne (26.06.2023)

  12. #9
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    В теории, какой из вариантов быстрее?
    На асме. Чем асм не устраивает?
    Куплю корпус и материнку от Spectrum +2/+3

  13. #10
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    На асме. Чем асм не устраивает?
    сложная матеша - камень преткновения.
    конвертация пикселя xy в адрес - тоже. Тем более если ускорять - нужно таблицы драконить, а это снова нужно понимание матешы. (на больших пространствах можно ищо ускорить заливкой атрибутами, не задевая пиксельный слой, кстати. Но это если Solid, а не Dithering).
    Мне реалтайм, а-ля Another World, в общем-то не нужон (хотя было бы круто, но сложновато). Достаточно и скорости около той что было в "22 позиции"

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Мега быстрая загрузка с кассеты???
    от ALEXEY.GORDEEV в разделе Софт
    Ответов: 48
    Последнее: 12.05.2021, 01:48
  2. memcpy|быстрая пересылка данных
    от NovaStorm в разделе Программирование
    Ответов: 9
    Последнее: 02.11.2013, 19:52
  3. Быстрая и медленная память 128к
    от Hacker VBI в разделе Программирование
    Ответов: 21
    Последнее: 27.04.2013, 16:43
  4. Быстрая тригонометрия...
    от ALKO в разделе Программирование
    Ответов: 8
    Последнее: 25.01.2011, 00:29
  5. Уродцы на Бэйсике
    от Jukov в разделе Игры
    Ответов: 24
    Последнее: 11.05.2006, 16:35

Ваши права

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