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

User Tag List

Страница 9 из 11 ПерваяПервая ... 567891011 ПоследняяПоследняя
Показано с 81 по 90 из 103

Тема: О рисовании прямых

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

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Я собираюсь в реальном времени считать, под таблицы нет места.
    Я так делал (и собираюсь ещё) - получалось вроде.
    Правда переменные держал в массиве который обрабатывал IX.
    Это не шибко шустро. Хотя всего 8 спрайтов, но всё равно нужно как-то исхитрится и хранить данные как-нибудь так, чтоб максимально ускорить вычисления.

  2. #82
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    473
    Спасибо Благодарностей отдано 
    94
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    К слову.
    Все исходники пересмотрел, но, к сожалению, осилить не смог. Пришлось идти в обход.
    Взял сишный исходник с википедии (http://www.google.ru/url?sa=t&rct=j&...,d.Yms&cad=rjt):
    Код:
    void drawLine(int x1, int y1, int x2, int y2) {
        const int deltaX = abs(x2 - x1);
        const int deltaY = abs(y2 - y1);
        const int signX = x1 < x2 ? 1 : -1;
        const int signY = y1 < y2 ? 1 : -1;
        //
        int error = deltaX - deltaY;
        //
        setPixel(x2, y2);
        while(x1 != x2 || y1 != y2) {
            setPixel(x1, y1);
            const int error2 = error * 2;
            //
            if(error2 > -deltaY) {
                error -= deltaY;
                x1 += signX;
            }
            if(error2 < deltaX) {
                error += deltaX;
                y1 += signY;
            }
        }
     
    }
    и скомпилил в SDCC. Как ни странно, работает замечательно, даже без правки ручками. Рисует линии с любым тангенсом и направлением. Сейчас избавлюсь от операций с индексными регистрами, и, вообще, благодать наступит.
    ЗЫ. Рисую под TS-Config/16c
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  3. #83
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,979
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    99 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    и скомпилил в SDCC.
    Кто же так делает? 16С сам по себе тормозной, а тут ещё линия без оптимизации

    Хотя, сам по молодости делал процедуру расчета следующей строки экрана на бейсике, потом компилил на тобосе и дизасемблировал. Работало даже как-то

  4. #84
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    473
    Спасибо Благодарностей отдано 
    94
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Кто же так делает? 16С сам по себе тормозной, а тут ещё линия без оптимизации
    Ну это ж не тот 16с, который от AloneCoder`а, а линейный: 2 пиксела на байт по 256 байт в строке, 512 строк (8 последовательных страниц). С учетом того, что рисуется, всё равно, по одной точке, скорость отрисовки такая же как на стандартном zx-экране (или это дело рук 14Мгц?! ). При этом расчет адреса по координатам проще и быстрее.
    Старшие 3 бита координаты Y - смещение в страницах относительно начала экрана.
    Младшие шесть бит указывают на начало стоки Y внутри страницы памяти
    Старшие 8 бит координаты X указывают на байт в строке, которому принадлежит точка.
    Младший указывает, левый или правый полубайт используется.

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

    Цитата Сообщение от drbars Посмотреть сообщение
    Хотя, сам по молодости делал процедуру расчета следующей строки экрана на бейсике, потом компилил на тобосе и дизасемблировал. Работало даже как-то
    Эх, молодость!
    Последний раз редактировалось Sergey; 06.09.2013 в 15:43. Причина: Решение о редактировани №1/31 от 06.09.2013г.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  5. #85
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Higgins Посмотреть сообщение
    UPDATE: Графики для вертикально и горизонтально ориентированных теперь слиты вместе, для наглядности. По горизонтали отложены номера тестов от 1 до 447 включительно. В тестах 1...192 строятся линии (0,0)-(255, 0...191). В тестах 193...447 -- линии (0,0)-(254...0, 191).
    Я думаю, весьма характеристичным было бы ещё и проверка тех же наклонов для коротких линий. Коротких - это в два раза меньше, то есть для горизонтальных - это 256, 128, 64, 32, 16, 8, 4, 2, 1 пиксель длины. Если речь про горизонтальные - это 192, 96, 48, 24, 12, 6, 3, 1 пиксель длины. Ведь есть ещё "стоимость" тактов обвязки, когда что-то предварительно вычисляется.
    Как весьма логично говорит Дима Быстров, чаще рисуются, как ни странно, не линии длиной 256 пикселей, а линии длиной 10 пикселей, а если обвязка съедает половину тактов - результат на коротких линиях понятно какой будет. Как это изобразить на гистограмме: для этого нужно отдельно график тактов построения линии, скажем, процедуры витамина, а на нём - ещё и сравнительные графики в тактах, но уже для линий короче. Вот тут то логарифмическая шкала будет очень в помощь :-)
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  6. #86
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,552
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    272
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    181 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    Question

    эта тема интересна еще кому-то?

    Прихожу без разрешения, сею смерть и разрушение...

  7. #87
    Master Аватар для DenisGrachev
    Регистрация
    15.04.2011
    Адрес
    г. Новосибирск
    Сообщений
    741
    Спасибо Благодарностей отдано 
    39
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    44 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    эта тема интересна еще кому-то?

    графики никому, там можно что угодно нарисовать

  8. #88
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,158
    Записей в дневнике
    39
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    37
    Поблагодарили
    24 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я бы порисовал.

    интересный подход к рисованию линий - строить точку на основании готовых координат (x,y). В 1ddkit использовался другой вариант, который позже нагло стырили.
    Вложения Вложения
    • Тип файла: zip zc.zip (3.0 Кб, Просмотров: 64)

  9. #89
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,552
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    272
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    181 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DenisGrachev Посмотреть сообщение
    графики никому, там можно что угодно нарисовать
    могу завтра тестовый снапшот выложить, сам проверишь
    (исходник рано, ибо он воистину ужасен, чистить и чистить)

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

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

  10. #90
    Master Аватар для DenisGrachev
    Регистрация
    15.04.2011
    Адрес
    г. Новосибирск
    Сообщений
    741
    Спасибо Благодарностей отдано 
    39
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    44 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    могу завтра тестовый снапшот выложить, сам проверишь
    (исходник рано, ибо он воистину ужасен, чистить и чистить)
    Выкладывай! и исходники потом тоже, а то пропадёт всё добро и пиши пропало
    А так может в демках заюзаем хоть!

Страница 9 из 11 ПерваяПервая ... 567891011 ПоследняяПоследняя

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

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

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

Ваши права

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