User Tag List

Страница 8 из 8 ПерваяПервая ... 45678
Показано с 71 по 80 из 80

Тема: Демонстрационные программы для Специалиста

  1. #71

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

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Как тебе такой алгоритм эллипса
    Алгоритм хороший, и если бы не локальные утолщения, то был бы замечательным. Насчет требуемых разрядностей - я сделал 16-разрядными t и t1.

  2. #72

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

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    если бы не локальные утолщения
    Нет ничего невозможного

    Вот новый вариант, постарался сделать максимально похожим на алгоритм окружности, чтобы было видно саму идею:
    Код:
        const circle = function(r) {
          let t=r/2,x=r,y=0;
          while(x>=0) {
            pset(x,y);
            if(t>=0) { ++y; t-=y; }
            if(t<0) { --x; t+=x; }
          }
        }
    
        const ellibase = function(r,r1,swap) {
          let t=r/2,x=r,y=0,t1=t,y1=0,py=0;
          while(x>=0) {
            py=y1; if(swap) pset(y1,x); else pset(x,y1);
            if(t>=0) { ++y; t-=y; if((t1-=r1)<0) { t1+=r; ++y1; } }
            if(t<0) { --x; t+=x; if(py==y1 && t>y && t1<r1) { ++y; t-=y; t1+=r-r1; ++y1; } }
          }
        }
    
        const ellipse = function(rx,ry) {
          if(rx>ry)
            ellibase(rx,ry,0);
          else
            ellibase(ry,rx,1);
        }
    Код выделенным шрифтом убирает утолщения.

    Ссылка для тестирования та-же.

  3. #73

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

    По умолчанию

    Попробуй (64,16) или (16,64). Для этих случаев картинка чуть изменилась, но утолщения на концах остались.

  4. #74

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

    По умолчанию

    Нет, в этом алгоритме (со "сплющиванием" окружности) похоже совсем идеальный эллипс не нарисовать.

    Идеальный вот:
    Код:
        const ellipse = function(rx,ry) {
          let ky=rx*rx/ry;
          let t=rx*rx/6,x=rx,y=0,dx=rx*ry,dy=0;
          while(x>=0) {
            pset(x,y);
            if(t>=0) { ++y; dy+=ky; t-=dy; }
            if(t<0) { --x; dx-=ry; t+=dx; }
          }
        }
    - - - Добавлено - - -

    В целых числах (но тут третья степень радиусов):
    Код:
        const ellipse = function(rx,ry) {
          let kx=ry*ry,ky=rx*rx;
          let t=ry*ky/6,x=rx,y=0,dx=rx*kx,dy=0;
          while(x>=0) {
            pset(x,y);
            if(t>=0) { ++y; dy+=ky; t-=dy; }
            if(t<0) { --x; dx-=kx; t+=dx; }
          }
        }
    Последний раз редактировалось b2m; 17.09.2025 в 14:32.

  5. #75

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

    По умолчанию

    Вероятно я ошибся в реализации, у меня на картинке занижает радиус по y.
    Последний раз редактировалось ivagor; 17.09.2025 в 16:39. Причина: убрал про дробную часть t, дело не в ней

  6. #76

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

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Или дело в потере дробной части
    В js нет потери дробной части, но когда радиус по оси Х маленький, то тоже занижает. Странно, видимо, особенность алгоритма.

    А вот с утолщениями нормально.

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

    Могу только предложить идею с перестановкой координат из второго варианта (со сплющиванием).

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

    ivagor(17.09.2025)

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

  8. #77

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

    По умолчанию

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

  9. #78

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,214
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,647
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Vertical Vass Scrolling

    Подробности здесь.



    Прямая ссылка на скачивание RKS.
    Последний раз редактировалось CityAceE; 17.09.2025 в 21:56.
    С уважением, Станислав.

  10. #79

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

    По умолчанию

    Осторожно, под спойлером есть негатив

    На мой субъективный взгляд в такой беспощадной рванине мало смысла, это тяжело смотреть и еще тяжелее получать какое-то удовольствие. Есть 2 основных варианта борьбы с разрывами:
    1. Выравнивание кода до кратности кадру + ручная подстройка, как здесь (кстати, теперь это работает и в emu и в современных версиях emu80). Таким макаром можно выводить (очень простую, состоящую из повторяющихся в столбце блоков 8x6) динамическую картинку разрешением примерно до 2/3 спековского экрана (256x128 или близко). Пример того, что можно реализовать - первый эффект из векторовской демы From Sunset To Dawn. Основной ограничивающий фактор - сложно поддерживать постоянный период выполнения кода по мере его усложнения.
    При наличии таймера очевидно все резко упрощается, один раз подстроились в начале, потом пользуемся без особых ограничений.
    Забыл сразу написать про второй ограничивающий фактор - сейчас существуют клоны специалиста с отличающимися параметрами развертки. Тут все зависит от желания и возможностей по отладке, или можно поддержать один самый распространенный вариант или те варианты, к которым есть доступ.
    2. Не полное устранение, а уменьшение заметности разрывов. 1) Построчный (не постолбцовый) вывод из теневого буфера, 2) бОльшую часть картинки должны занимать однородные (сплошные черные или белые) участки. Пример реализации такого подхода - jet set. Ну и тут неприятная зависимость - чем меньше FPS, тем реже разрывы.
    [свернуть]
    Последний раз редактировалось ivagor; 18.09.2025 в 07:31. Причина: дополнил первый пункт про разные варианты развертки

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

    CityAceE(18.09.2025)

  11. #80

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

    По умолчанию

    А что, если таким образом выводить текст? Понятно, что символы не 6х8, а 8х10, но всё же. Я думаю ускорение будет заметно. Какой-нибудь скроллер забабахать. Шрифт, правда, в два раза распухнет...

Страница 8 из 8 ПерваяПервая ... 45678

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

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

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

Похожие темы

  1. Конвертор ZX-картинок для Специалиста
    от CityAceE в разделе Специалист
    Ответов: 19
    Последнее: 08.05.2025, 18:04
  2. Ответов: 153
    Последнее: 16.12.2021, 19:07
  3. Элита для Специалиста
    от jerri в разделе Специалист
    Ответов: 77
    Последнее: 20.11.2021, 20:22
  4. Ответов: 70
    Последнее: 22.01.2018, 21:06
  5. OriNET для Специалиста ?
    от SYR-ALEX в разделе Специалист
    Ответов: 22
    Последнее: 21.07.2017, 07:40

Ваши права

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