User Tag List

Страница 5 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 41 по 50 из 63

Тема: Процедура заливки замкнутого контура

  1. #41

    Регистрация
    23.01.2005
    Сообщений
    235
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    offtopic: вы вообще очень мощно кодите. я давно поражен тем, как вы реализовывали те или иные вещи. недавно посмотрел процедуру линии by alex raider. тот же принцип применен в процедуре от х-trade, опубликованной в одном из журналов spectrum expert. только там она занимает значительно больше памяти и работает чуть-чуть быстрее, видимо благодаря этому - я не сравнивал алгоритмы. у них по-моему обработка входных параметров оптимальнее сделана.

  2. #42

    Регистрация
    24.06.2005
    Адрес
    novosibirsk
    Сообщений
    266
    Записей в дневнике
    5
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ага, не ставилось цели получить worlds fastest line :-)
    да и писалось всё в 1996 году :-)
    Alex Raider, Flash inc. 1992-1997 Новосибирск

  3. #43

    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    75
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вернулся из нетворческого отпуска, но там все же дописал эту процедуру. В итоге слишком быстро не получилось. , но зато килобайта буфера(а то, вроде, и меньше) хватает на все задачи. Так что прямое ей место, видимо, в граф. редакторы.

    07.09 Ерунду спорол с проверкой на 0 длины линии. Много лишнего, сократилась на 15 байт.
    Вложения Вложения
    • Тип файла: zip ffill.zip (16.1 Кб, Просмотров: 280)
    Последний раз редактировалось TomCaT; 17.09.2006 в 15:47.
    Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
    Власть людей сильнее, чем люди у власти.
    Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)

    Скрытый текст

    Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
    Мы все немного режем по дереву, а потом собираем корабли в бутылках.
    Is it the same old story you are going to tell me
    or is it the old story telling me and you we are the same?
    http://www.sky.od.ua/~ptsk
    [свернуть]

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

    Dart Alver(09.04.2020)

  4. #44

    Регистрация
    31.03.2005
    Адрес
    Новосибирская область
    Сообщений
    128
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    интересно как вот это реализовано? вот бы разобраться..
    пример с ftp-шника WOS
    Вложения Вложения

  5. #45

    Регистрация
    24.06.2005
    Адрес
    novosibirsk
    Сообщений
    266
    Записей в дневнике
    5
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    называется заливка с затравкой.

    в аттачах примеры на си из книги Шикина и Борескова
    Вложения Вложения
    • Тип файла: txt FILL1.txt (372 байт, Просмотров: 302)
    • Тип файла: txt FILL2.txt (1.5 Кб, Просмотров: 307)
    • Тип файла: txt FILL3.txt (6.2 Кб, Просмотров: 288)
    Alex Raider, Flash inc. 1992-1997 Новосибирск

  6. #46

    Регистрация
    31.01.2007
    Адрес
    Волжский
    Сообщений
    40
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Зацените игру Hard Driving помоему очень круто для спеки . 89 года. 48к.
    И как это всё работает на 3.5 мгц ....

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

  8. #47

    Регистрация
    10.01.2010
    Адрес
    Смоленская обл.
    Сообщений
    556
    Спасибо Благодарностей отдано 
    187
    Спасибо Благодарностей получено 
    198
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Стряхну пыль с темы. ))

    Цитата Сообщение от TomCaT Посмотреть сообщение
    Так что прямое ей место, видимо, в граф. редакторы.
    Заменял этой процедурой процедуру заливки в BGE 3.12 Demo, поскольку эта меньше по размеру а места катострофически не хватало. И соответственно она перешла по наследству в BGE 4.0 demo где места ещё меньше осталось )) , и вот внезапно спустя 4 года обнаружил что процедура имеет баг.

    Судя по тому что о нём никто не упоминал - это показатель использования. )) Глюк наиболее вероятно можно словить при заливке малых областей, а так как заливают чаще крупные, то ,,,
    Смысл бага в том, что при некоторых выборах точки заливки, заливалась область снаружи выделения.

    По факту я даже не сразу заподозрил процедуру заливки, думал в коде выбора точки ошибка. Но в конце концов условия срабатывания бага удалось выявить.

    Итак условия проявления бага (должены быть соблюдены все):

    1) Позиция выбора начала заливки (в дальнейшем курсор ) не должна попадать на установленный пиксель. (Собственно это условие проверяется самой процедурой, я записал его лишь потому что при моём фиксе обвесами приходится проверять его дополнительно.)

    2) Байт на который попадает курсор не должен быть нулевым, т.е. хотя бы один пиксель должен быть.

    3) В байте слева до курсора не должно быть пикселей, т.е. все пиксели в байте должны быть справа за курсором.

    4) Либо байт на который попадает курсор должен быть в крайнем слева знакоместе экрана, либо же в байте предыдущего знакоместа должен быть выставлен в 1 - bit0 (т.е. крайняя правая точка в той же линии предыдущего знакоместа)

    При соблюдении этих условий, вместо положенного действия процедура заливает совсем другую область.

    Моя попытка вникнуть в суть данной проги успехом не увенчалась.
    Абы какое решение я нашёл, это обвес проги дополнением проверяющим попадание в условия бага и соответственно изменяющим эти условия (тупо точку в крайней левой позиции в байте устанавливает), но размер проги соответственно тоже значителино увеличился (хотя всё ещё меньше чем был в изначальной процедуре BGE)

    Вопрос: может ли автор или кто-либо разобраться и как-то исправить баг в самой процедуре ?

    А мой обвес работает примерно так :
    Проверяем попадание на установленную точку, если да, то выход.
    Иначе создаётся заготовка для двойного циклического вызова расширенной процедуры, т.е. процедура будет вызвана 2 или более раза (исключая случай крайней нижней позиции), в стандартном случае один раз по позиции, а другой на один пиксель ниже. Поскольку в нормальном варианте там будет уже заполненный или граничный пиксель, то ничего лишнего не нарисуется ))
    А затем расширенная процедура:
    1. Проверяет попадание на установленную точку, если да, то выход.
    2. Прверяет на условия возникновения глюка, если нет то переход к основной процедуре
    3. Ну а если всё сбылось для появления глюка, то X позиции выбора для циклических вызовов устанавливается в крайнюю левую позицию знакоместа, а для вызова основной процедуры устанавливается крайняя левая точка байта, а позиция курсора смещается за неё.
    После, если снова попадаем на условия глюка, расширенная процедура вызывается снова, вначале движемся по ветке вверх, потом вниз.

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

    Упс. ошибочка, при нулевом байте тоже срабатывает глюк, если в следующем байте установлен крайний левый пиксель или знакоместо курсора крайнее правое.
    Последний раз редактировалось Dart Alver; 09.09.2024 в 23:24.

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

    TomCaT(17.10.2024)

  9. #48

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,295
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,459
    Поблагодарили
    949 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    условия проявления бага (должены быть соблюдены все)
    наверно проще приложить SnapShot ( где нажав `огонь` сразу будет виден результат ошибочной заливки )

  10. #49

    Регистрация
    10.01.2010
    Адрес
    Смоленская обл.
    Сообщений
    556
    Спасибо Благодарностей отдано 
    187
    Спасибо Благодарностей получено 
    198
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    наверно проще приложить SnapShot ( где нажав `огонь` сразу будет виден результат ошибочной заливки )
    Ok ! Вот снап BGE 3.12d с экраном в режиме заливки.
    Ткните в любой прямоугольник и будет вам счастье (точнее наоборот) ))

    fill_snap_BGE3.12d.sna.zip

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

    Исходники BGE 3.12d : https://disk.yandex.ru/d/l3YDa52I0iMS3Q
    Процедура заливки в файле 'Fill3.asm'

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

    TomCaT(17.10.2024)

  11. #50

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,461
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    178
    Поблагодарили
    124 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как давно это было.
    Вложения Вложения

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

    Dart Alver(11.09.2024), TomCaT(18.10.2024)

Страница 5 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Процедура детекта TurboSound.
    от Shiru в разделе Программирование
    Ответов: 21
    Последнее: 27.05.2005, 18:45
  2. Ответов: 14
    Последнее: 13.03.2005, 15:01
  3. Процедура опроса клавиатуры
    от Aprisobal в разделе Программирование
    Ответов: 8
    Последнее: 19.02.2005, 18:12

Ваши права

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