User Tag List

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

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

  1. #1

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

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

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

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

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

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

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

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

  3. #2

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 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

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #4

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

  6. #5

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #6

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,103
    Спасибо Благодарностей отдано 
    1,336
    Спасибо Благодарностей получено 
    323
    Поблагодарили
    152 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

  8. #7

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,822
    Спасибо Благодарностей отдано 
    274
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  9. #8

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    Reobne(26.06.2023)

  10. #9

    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,605
    Спасибо Благодарностей отдано 
    254
    Спасибо Благодарностей получено 
    269
    Поблагодарили
    188 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    В теории, какой из вариантов быстрее?
    На асме. Чем асм не устраивает?
    ___________

  11. #10

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    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

Ваши права

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