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

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 24

Тема: Решение формулы Ordered Dither

  1. #1
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,439
    Спасибо Благодарностей отдано 
    192
    Спасибо Благодарностей получено 
    145
    Поблагодарили
    61 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Решение формулы Ordered Dither

    Подскажите как перевести эту формулу в псевдокод?





    https://www.cs.princeton.edu/courses...her/sld024.htm

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

  3. #2
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ты по PureBasic прикалываешься, погугли што ли..
    Не нашел файлика, осталась выдранная текстовка
    Вложения Вложения

  4. #3
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,439
    Спасибо Благодарностей отдано 
    192
    Спасибо Благодарностей получено 
    145
    Поблагодарили
    61 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо. Но я все равно не понял:

    откуда 4 и что такое D и U

    У меня конечная цель не конвертировать картинки, а получить именно сам узор "чанок" в зависимости от произвольно заданного размера матрицы (чанка).

    То есть на выходе псевдо кода хотелось бы получать массив типа:

    0 8 2 10 12 4 14 6 3 11 1 9 15 7 13 5

  5. #4
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Писал я код по статейке, но куда-то потерял( Вот код, который гоблин написал(для ужясм):
    Код:
    ;69 bytes -2
    	device zxspectrum128
            ORG #6000
    begin
    matrix:
     db 0*8,8*8,2*8,10*8
     db 12*8,4*8,14*8,6*8
     db 3*8,11*8,1*8,9*8
     db 15*8,7*8,13*8,5*8
    gench:
    ;  For y=0 To 128;;;;;+8
    ;  For x=0 To 7
    ;      i=x&3
    ;      j=y&3
    ;      II=y>>3
    ;      If II <= D(i,j)
    ;         Plot(x,y,0)
    ;      Else
    ;         Plot(y,x,RGB(255,255,255))
    ;      EndIf
    ;    Next x
    ;  Next y
    
     ld hl,$4000
     ld b,$80;bit weight
     ld e,0;y
    for_y:
     ld d,0;x
     push hl
    for_x:
     push hl
    ;      i=x&3
    ;      j=y&3
     ld a,e;y
     and 3
     ld c,a
     add a,a
     add a,a;c
     ld c,a
     ld a,d;x
     and 3
     add a,c
     ld l,a
     ld h,matrix/256
     ld a,e;II=y>>3
    ; and %11111000
    ; rra:rra:rra
     cp (hl);      If II <= D(i,j)
     pop hl
    ;; jr z,plot
     jr c,noplot
    plot:
     ld a,b:or (hl):ld (hl),a
    noplot:
     inc h
     inc d
     bit 3,d:jr z,for_x
     pop hl
     or a:rrc b:jr nc,nonextp
     inc l
    nonextp:
    
     inc e:bit 7,e:jr z,for_y
     
     jr $
    end
    	display /d,end-begin
    	savesna "!gc.sna",gench;;begin
    - - - Добавлено - - -

    упс, нашол.

    На выходе получаешь chunk.png
    Вложения Вложения

  6. #5
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,439
    Спасибо Благодарностей отдано 
    192
    Спасибо Благодарностей получено 
    145
    Поблагодарили
    61 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо. Но мне все таки нужен код именно для получения вот этого

    Data.i 0,8,2,10
    Data.i 12,4,14,6
    Data.i 3,11,1,9
    Data.i 15,7,13,5

    остальное то отрисовать не сложно. )

  7. #6
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не особо заморачивался алгоритмом, брал готовые матрицы

    здесь http://caca.zoy.org/wiki/libcaca/study/2 тожно не особо ясно.

  8. #7
    Master
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    43
    Поблагодарили
    32 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В принципе вроде не сложно, но размерность чанок степени двойки(4х4,8х8,16х16...). Подходит? Если да могу в меру своего косноязычия описать что то типа алгоритма.

  9. #8
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,439
    Спасибо Благодарностей отдано 
    192
    Спасибо Благодарностей получено 
    145
    Поблагодарили
    61 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    Подходит? Если да могу в меру своего косноязычия описать что то типа алгоритма.
    Ага, было бы интересно хотя бы с такими поиграться.

  10. #9
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,042
    Спасибо Благодарностей отдано 
    934
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    122 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Побаловался немного на ассемблере Z80.
    Начинается всё с матрицы 1х1 содержащий нолик.
    Все промежуточные матрицы хранятся в углу массива 8х8. "Matrix" 8080H
    Следующая матрица получается так: (матрица умножается на константу 4, потом 3 раза копируется: (по диагонали с добавлением единички, и по ортам с добавлением 2 и 3) )
    Прилагаю ассемблер (sjasmplus) с небольшими комментариями, говорящими метками и нарочитыми подпрограммами, и снапшот.
    Вложения Вложения
    Последний раз редактировалось Reobne; 21.03.2016 в 11:18. Причина: Смайлик незапланированный убрал

  11. #10
    Master
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    43
    Поблагодарили
    32 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вкратце
    e(n,x,y) - элемент матрицы размерностью 2^n в строке y столбца x
    рекурсивная формула

    e(n,x,y)=e(n-1,x div 2,y div 2)+e(1,x mod 2,y mod 2)*2^n

    матрица E(1)=[[3,1],[0,2]] определяет изначальный паттерн и соответственно элементы e(1,x,y) берутся из нее.
    Разница с формулой в стартовом сообщении в использовании в качестве индекса степени, а не размерности.

    исправления http://zx-pk.ru/showthread.php?t=263...l=1#post863984

    add
    Кстати переделать под другую размерность изначального паттерна проще простого, немного обобщаем и

    e(n,x,y)=e(n-1,x div r,y div r)+e(1,x mod r,y mod r)*r^n

    где r соответственно размерность
    Последний раз редактировалось krt17; 21.03.2016 в 13:09.

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Audio-CD + привод CD-ROM как у-во ввода? Простое решение.
    от ss2user в разделе Внешние накопители
    Ответов: 7
    Последнее: 22.10.2015, 16:51
  2. FDD emulator (готовое решение)
    от selevo в разделе Внешние накопители
    Ответов: 7
    Последнее: 22.07.2015, 07:53
  3. Ответов: 20
    Последнее: 28.04.2012, 10:44
  4. Решение проблемы +/- 12 В для 580 серии.
    от falanger в разделе Разное
    Ответов: 30
    Последнее: 25.12.2010, 20:47
  5. Решение задачи по переводу демы SNG
    от AAA в разделе Разный софт
    Ответов: 2
    Последнее: 04.02.2007, 11:40

Ваши права

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