User Tag List

Страница 12 из 31 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя
Показано с 111 по 120 из 342

Тема: Программирование на ассемблере

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Альтернативный вариант коррекции соотношения сторон, позволяет рисовать по всему экрану без ограничений и он еще и быстрее (чем V2AR, просто V2 конечно все равно быстрее). Кроме того таблица коррекции теперь генерируется самой программой (можно, например, сгенерировать несколько таблиц для рисования разных эллипсов).
    Вложения Вложения
    Последний раз редактировалось ivagor; 01.12.2018 в 21:51.

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

  3. #2

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    812
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ivagor, а клиппинга по границам экрана нет?
    Больше игр нет

  4. #3

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В предыдущих вариантах я стремился к максимальной скорости и клиппинг там отсутствовал.
    Если главное - возможности, а не скорость, то можно использовать предлагаемую V3. Здесь есть:
    1) Клиппинг по границам экрана.
    2) Возможность рисовать эллипсы. 16 коэффициентов сжатия (от 1/16 до 16/16) по каждой оси. Числитель коэффициента по X задается в D, по Y - в E. Перед первым вызовом circle надо вызвать IniCircle.
    3) Возможность рисовать дуги с дискретностью 2pi/8. Маска дуг в регистре С, по часовой стрелке. Дополнительно можно посмотреть пример.
    Обращаю внимание, что в V3 радиус в регистре B.
    Пример клиппинга и рисования эллипсов - circleClipAndEllip
    Пример рисования дуг - circleArc
    Примеры разделил для наглядности, конечно же можно комбинировать возможности и, например, рисовать дуги эллипсов с клиппингом.
    Сами процедуры рисования в обоих примерах одинаковые.
    Вложения Вложения

  5. #4

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В детстве завидовал быстрому корветовскому paintу. Корветовский бейсик медленно рисует круги, зато очень быстро закрашивает. Проблема paint в векторовском бейсике связана с тем, что процедура там чисто пиксельная и никак не использует байтовую структуру экрана для ускорения. Зато процедура очень компактная и простая. Взял ее за основу и перевел в двухцветный вариант. А потом оптимизировал за счет комбинированного использования байтов/пикселов. Процедура ускорилась на (десятичный) порядок (сравниваю двухцветные варианты, цветной еще намного медленнее)! Жалко не сохранил первый вариант, было бы видно, как стало заливать в 10 раз быстрее. Теперь корветовская процедура всего в два с копейками раза быстрее Возможно стоило ее взять за основу.
    Нужно конечно отметить, что корветовский paint работает с 8 цветным экраном, а мой вариант с 2х цветным, но корветовский "ускоритель" волшебным образом в вектор не пересадишь. Прикидываю, что при переходе к цветному варианту замедление было бы в худшем случае раза в 4, что все равно намного быстрее бейсиковской процедуры. Но такой вариант был бы довольно большим. А вот с z80 замедление было бы не таким существенным, думаю раза в 2.
    Пока выкладываю "тизер" без исходника, может еще пооптимизирую.
    Вложения Вложения
    • Тип файла: zip paintV2.zip (622 байт, Просмотров: 117)

  6. #5

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Прикидываю, что при переходе к цветному варианту замедление было бы в худшем случае раза в 4
    Оказалось, что не в 4, а в 3, причем еще можно немного оптимизировать.

  7. #6

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Реализовал еще один мечт детства, касающийся paint - заливку с маской/шаблоном. С ходу не вспомнил, где можно подсмотреть и изобрел свой велосипед. Тоже пока без исходника, надо еще пооптимизировать и потестировать.
    Мельком глянул корветовский paint и понял, что вряд ли буду его подробно разбирать, очень уж там все оптимизировано. А некоторые решения и вовсе неприменимы для вектора, например заливка строки стеком.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	paintV4mask.png 
Просмотров:	151 
Размер:	2.7 Кб 
ID:	67223  
    Вложения Вложения
    Последний раз редактировалось ivagor; 08.12.2018 в 12:19.

  8. #7

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Реализовал еще один мечт детства, касающийся paint - заливку с маской/шаблоном. ...
    Интересно, как будет выглядеть результат заливки, если маска будет "наезжать" на контур...
    Или это приведет к не предсказуемому результату?
    Наверное можно попробовать необходимость "наезда на контур" сделать одним из параметров. И применять, когда это даёт более "эстетичный" результат заливки. Хотя проверка на необходимость "наезда" замедлит алгоритм...

  9. #8

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    как будет выглядеть результат заливки, если маска будет "наезжать" на контур
    Т.е. если заливка будет перекрашивать не только "внутренности", но и границу? Самый простой вариант - запомнить координаты точек границы при заливке и потом их все перекрасить (причем можно для границы задать отдельную маску), но это имхо довольно странный вариант. Выкладываю исходник, можно переделать его на свой вкус
    Вложения Вложения

  10. #9

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  11. #10

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    количество точек может быть слишком большим
    Можно грубо прикинуть. Пусть большая фигура, 256 строк, в каждой пусть 4 границы - 256*4*2=2 килобайта.
    Есть альтернативный вариант, при котором границы могут быть сколь угодно сложными, но зато -8 килобайт памяти - нарисовать границы в невидимой плоскости сплошными, а в видимой - как угодно, и при заливке ориентироваться на невидимые сплошные границы. Кстати, такой вариант можно сделать более быстрым, чем V5mask.

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

    Цитата Сообщение от ivagor Посмотреть сообщение
    такой вариант можно сделать более быстрым, чем V5mask
    Вот тут я поторопился, регистры то все кончились, поэтому будет даже медленнее.

Страница 12 из 31 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Вычисление числа Пи на ассемблере
    от perestoronin в разделе Разное
    Ответов: 330
    Последнее: 06.08.2025, 15:04
  2. Ответов: 275
    Последнее: 16.12.2018, 23:01
  3. try-catch на ассемблере z80
    от siril в разделе Программирование
    Ответов: 22
    Последнее: 30.10.2012, 21:17
  4. Продам книгу- AMIGA: программирование на ассемблере
    от Doctor Max в разделе Барахолка (архив)
    Ответов: 11
    Последнее: 01.03.2012, 00:35
  5. Подпрограмма на ассемблере в памяти?
    от jimled в разделе Программирование
    Ответов: 1
    Последнее: 29.11.2009, 06:46

Ваши права

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