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

User Tag List

Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 27 из 27

Тема: Масштабирование экрана Спектрума

  1. #21
    Activist Аватар для captain cobalt
    Регистрация
    13.03.2005
    Адрес
    Пермь
    Сообщений
    294
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот моё решение.
    Аналитическое, надо проверить на практике.
    Маленькая таблица и никаких умножений-делений.

    Заведём таблицу:
    t=[281,19,263,1,280,18,262,0];

    Пусть p1,p2,p3,p4 - трёхбитовые цвета цвета четырёх пикселей.
    Пусть bright - одна на всех яркость.

    Цвет результирующего пикселя можно подсчитать так:
    Код:
    color=256+t[p1]+t[p2]+t[p3]+t[p4];
    if (!bright) color+=281;
    if (color & 0x0400) color+=90; //синий из второй половины
    color&=0xff; //взять младший байт
    Результат: color - цвет из вышенарисованной палитры.

    Для переменной color и элементов таблицы t необходимо минимум 2 байта (одного байта недостаточно).

  2. #22
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,575
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    402
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от maximk
    (((index / 6) % 3) * 2) + (index / 108) * 3 = индекс синего.
    Для красного и зелёного формулы работают, а для синего нет Логически прикинув понял, что в формуле лишнее умножение на 2. То есть формула должна выглядеть так:

    ((index / 6) % 3) + (index / 108) * 3 = индекс синего

    При этом ты ещё забыл упомянуть, что везде идёт деление без остатка.
    С уважением, Станислав.

  3. #23
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,575
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    402
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну вот, у меня всё получилось (результат прилагается). Огромное спасибо всем откликнувшимся и принявшим участие в дискуссии! Но в первую очередь хочется поблагодарить key-jee'я, который собственно поделился алгоритмом и maximk'а, который поделился информацией о цветах Палма.

    Я не знаю причину, по которой key-jee поделился своим алгоритмом в привате, а не в этой ветке, поэтому если он посчитает нужным, то сам расскажет здесь о сути своего метода.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	Dizzy8bpp2.png 
Просмотров:	1389 
Размер:	5.7 Кб 
ID:	3526  
    С уважением, Станислав.

  4. #24
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    качество хорошее. а насколько быстро?

  5. #25
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,575
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    402
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SMT
    а насколько быстро?
    Очень даже быстро! В методе задействованы две таблички на 125 байт каждая. А если перестроить палитру на свой лад, то и вовсе без таблиц обойтись можно.
    С уважением, Станислав.

  6. #26
    Activist Аватар для captain cobalt
    Регистрация
    13.03.2005
    Адрес
    Пермь
    Сообщений
    294
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE
    При этом ты ещё забыл упомянуть, что везде идёт деление без остатка.
    Это такое свойство языка си. Деление целых чисел возвращает целочисленный результат.
    Цитата Сообщение от CityAceE
    если он посчитает нужным, то сам расскажет здесь о сути своего метода.
    Интересно.
    Цитата Сообщение от CityAceE
    Очень даже быстро!
    Значит можно быстрее.
    Цитата Сообщение от CityAceE
    таблички на 125 байт
    Видимо, 5 градаций [0..4] на компонент (R,G,B) в степени 3 (количество компонент).

    Не очень хорошее решение. Больше половины элементов таблицы не используется. Очевидно результирующий пиксель может принимать только 40 цветов и его компоненты R,G,B не могут быть всепопарно различны.

    А как считается индекс в таблице?
    Два умножения на 5? Сложением констант 5 и 25?

  7. #27
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,575
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    402
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от captain cobalt
    Значит можно быстрее.
    Я думаю, что наверняка можно! Но не для моего случая.

    Цитата Сообщение от captain cobalt
    Видимо, 5 градаций [0..4] на компонент (R,G,B) в степени 3 (количество компонент). Не очень хорошее решение.
    Да примерно так. Но в моём случае именно такое решение было идеальным.

    Цитата Сообщение от captain cobalt
    Больше половины элементов таблицы не используется.
    Всего в участке 2х2 возможны 92 комбинации цветов. При этом часть комбинаций дают в итоге одинаковый цвет. Например, я бы никогда не подумал, что если смешать два чёрных и два жёлтых пикселя, то на выходе получится тот же цвет, что даст смешение двух красных и двух зелёных точек. Всего же получается 83 уникальных цвета на выходе. Это количество используемых цветов в одной табличке из 125 элементов. Табличек две, по числу градаций яркости.

    Цитата Сообщение от captain cobalt
    А как считается индекс в таблице?
    Это уже детали алгоритма. Ждём, что на это ответит сам key-jee.
    С уважением, Станислав.

Страница 3 из 3 ПерваяПервая 123

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

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

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

Похожие темы

  1. Обрезание спрайта на краю экрана.
    от moroz1999 в разделе Программирование
    Ответов: 29
    Последнее: 18.02.2009, 16:20
  2. Firmware для Спектрума
    от CityAceE в разделе Оси
    Ответов: 30
    Последнее: 25.07.2005, 10:14
  3. Удовольствие от Спектрума?
    от Virtex в разделе Несортированное железо
    Ответов: 3
    Последнее: 09.04.2005, 23:32
  4. Разрешение экрана.
    от CityAceE в разделе Форум
    Ответов: 19
    Последнее: 06.03.2005, 06:37

Ваши права

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