User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 24

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

  1. #11

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,101
    Спасибо Благодарностей отдано 
    1,333
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    151 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    krt17, в каждой следующей матрице в 4 раза больше чисел. Напрашивается не 2 в степени, а 4^(n-1).

  2. #12

    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    810
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    59 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    krt17, в каждой следующей матрице в 4 раза больше чисел. Напрашивается не 2 в степени, а 4^(n-1).
    число столбцов/строк 2^n (n=2...), число элементов будет (2^n)*(2^n)=2^(2n)=4^n зачем делить еще на 4 я не очень понял.
    Для случая n=3 число строк/столбцов будет 2^3=8 элементов 4^3=64
    n=4 - 16, 256
    видимо у тебя n немного другое обозначает.

    Внезапно на подобной хрене возможен многомерный детеринг

    add
    так да стоп я что то упустил. Сейчас шлифанем.

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

    Все верно Reobne, был прав, я затупил
    правильная формула:

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

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

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

    Ну и до кучи Lua демо
    Код:
    function elem(n,y,x)
    --print (n,y,x)
    if n==1 then return pattern[y+1][x+1]
      else return elem(n-1,math.floor(y/2),math.floor(x/2))+elem(1,y%2,x%2)*4^(n-1)
    end
    
    end
    pattern={{3,1},{0,2}}
    cur=3
    for y=0,2^cur-1 do
      io.write (y.."\t")
    for x=0,2^cur-1 do
      io.write (elem(cur,y,x).."\t")
      end
      io.write ("\n")
      end
    Последний раз редактировалось krt17; 21.03.2016 в 13:19.

  3. #13

    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,551
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    83 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    Ну и до кучи Lua демо
    Попробовал перевести на PureBasic. Получается что-то не то...

    PHP код:
    Global Dim Pattern.l(16,16)

    Procedure elem(n,y,x)
      
     ; Print( 
    Str(n) )
     ; Print( 
    Str(x) )
     ; 
    PrintNStr(y) )
      
      If 
    n=1
        
        ProcedureReturn Pattern
    (y+1,x+1)
        
      Else
        
        
    ProcedureReturn elem(n-1Round(y/2,#PB_Round_Down), Round(x/2,#PB_Round_Down)) + elem(1, y%2, x%2) * Pow(4,(n-1))
        
      
    EndIf
      
    EndProcedure

    OpenConsole
    ("")


     ; 
    Pattern={{3,1},{0,2}}
    Pattern(0,0) = 3
    Pattern
    (0,1) = 1
    Pattern
    (1,0) = 0
    Pattern
    (1,1) = 2

    cur 
    3

    For y=0 To Pow(2,cur-1)
       
      Print( 
    Str(y) ); io.write (y.."\t")
      
      For 
    x=0 To Pow(2,cur-1)
         
        Print( 
    Str(elem(cur,y,x)) ); io.write (elem(cur,y,x).."\t")
        
        
    elem(cur,y,x)
      
    Next x
      
      PrintN
    (""); io.write ("\n")
    Next y

    CallDebugger 
    Последний раз редактировалось newart; 22.03.2016 в 00:52.

  4. #14

    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    810
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    59 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от newart Посмотреть сообщение
    Получается что-то не то...
    Для деления воспользуйся >> , видимо что то там с округлением суровое . Я не в курсе что там с басиком, на lua 100% рабочий вариант, проверял с разными cur.

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

    О а на фига еще один elem(cur,y,x) ? Это не нужно. И что собственно получается то?

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

    Мое при cur=4
    Код:
    D:\Dropbox\lua>lua53.exe test1.lua
    0       255     127     223     95      247     119     215     87      253     125     221     93      245     117     213     85
    1       63      191     31      159     55      183     23      151     61      189     29      157     53      181     21      149
    2       207     79      239     111     199     71      231     103     205     77      237     109     197     69      229     101
    3       15      143     47      175     7       135     39      167     13      141     45      173     5       133     37      165
    4       243     115     211     83      251     123     219     91      241     113     209     81      249     121     217     89
    5       51      179     19      147     59      187     27      155     49      177     17      145     57      185     25      153
    6       195     67      227     99      203     75      235     107     193     65      225     97      201     73      233     105
    7       3       131     35      163     11      139     43      171     1       129     33      161     9       137     41      169
    8       252     124     220     92      244     116     212     84      254     126     222     94      246     118     214     86
    9       60      188     28      156     52      180     20      148     62      190     30      158     54      182     22      150
    10      204     76      236     108     196     68      228     100     206     78      238     110     198     70      230     102
    11      12      140     44      172     4       132     36      164     14      142     46      174     6       134     38      166
    12      240     112     208     80      248     120     216     88      242     114     210     82      250     122     218     90
    13      48      176     16      144     56      184     24      152     50      178     18      146     58      186     26      154
    14      192     64      224     96      200     72      232     104     194     66      226     98      202     74      234     106
    15      0       128     32      160     8       136     40      168     2       130     34      162     10      138     42      170

  5. #15

    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,551
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    83 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    О а на фига еще один elem(cur,y,x) ? Это не нужно. И что собственно получается то?
    Да затупил, там еще в цикле -1 не туда поставил.

    Теперь получается вот что:

    PHP код:

    0  170 042 138 010 162 034 130 002 168 040 136 
    008 160 032 128 000
    1  042 042 010 010 034 034 002 002 040 040 
    008 008 032 032 000 000
    2  138 010 138 010 130 002 130 002 136 
    008 136 008 128 000 128 000
    3  010 010 010 010 002 002 002 002 
    008 008 008 008 000 000 000 000
    4  162 034 130 002 162 034 130 002 160 032 128 000 160 032 128 000
    5  034 034 002 002 034 034 002 002 032 032 000 000 032 032 000 000
    6  130 002 130 002 130 002 130 002 128 000 128 000 128 000 128 000
    7  002 002 002 002 002 002 002 002 000 000 000 000 000 000 000 000
    8  168 040 136 
    008 160 032 128 000 168 040 136 008 160 032 128 000
    9  040 040 
    008 008 032 032 000 000 040 040 008 008 032 032 000 000
    10 136 
    008 136 008 128 000 128 000 136 008 136 008 128 000 128 000
    11 
    008 008 008 008 000 000 000 000 008 008 008 008 000 000 000 000
    12 160 032 128 000 160 032 128 000 160 032 128 000 160 032 128 000
    13 032 032 000 000 032 032 000 000 032 032 000 000 032 032 000 000
    14 128 000 128 000 128 000 128 000 128 000 128 000 128 000 128 000
    15 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 
    код такой

    PHP код:
    Global Dim Pattern.l(16,16)

    Procedure elem(n,y,x)
      
      If 
    n=1
        
        ProcedureReturn Pattern
    (y+1,x+1)
        
      Else
       
        
    ProcedureReturn elem(n-1y>>1x>>1) + elem(1y%2x%2) * Pow(4,(n-1))
        
      EndIf
      
    EndProcedure

    OpenConsole
    ("")


    Pattern(0,0) = 3
    Pattern
    (0,1) = 1
    Pattern
    (1,0) = 0
    Pattern
    (1,1) = 2

    cur 
    4

    For y=0 To Pow(2,cur)-1
       
      
    Print(  LSet(Str(y), 3" ") )
      
      For 
    x=0 To Pow(2,cur)-1
         
        
    Print( RSetStr(elem(cur,y,x)),3"0") + " " )
        
      
    Next x
      
      PrintN
    ("")
      
    Next y

    CallDebugger 

  6. #16

    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    810
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    59 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Pattern(y+1,x+1) не то, у тебя индексы массива с 0, а в луа с 1 поэтому я прибавлял поменяй на
    Pattern(y,x)

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

  8. #17

    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,551
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    83 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    Pattern(y+1,x+1) не то, у тебя индексы массива с 0, а в луа с 1 поэтому я прибавлял поменяй на
    Pattern(y,x)
    Ага! Теперь результаты совпали.

    Осталось понять что за массив я получил. ))
    Что это за куча чисел?

  9. #18

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,101
    Спасибо Благодарностей отдано 
    1,333
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    151 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от newart Посмотреть сообщение
    Подскажите как перевести эту формулу в псевдокод?
    Цитата Сообщение от newart Посмотреть сообщение
    Осталось понять что за массив я получил. ))
    Что это за куча чисел?
    Всё, это уже решение. Теперь надо сделать RET.
    Для чего это решение было нужно?
    Если конвертер картинок, то картинку нужно масштабировать, цвета нормировать от 0 до (4^n)+1, заменить цветные пиксели на чанки.
    Однобитные пиксели внутри чанок получаются после сравнения цвета и соответствующего элемента матрицы.

  10. #19

    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,551
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    83 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    Всё, это уже решение. Теперь надо сделать RET.
    Для чего это решение было нужно?
    Если конвертер картинок, то картинку нужно масштабировать, цвета нормировать от 0 до (4^n)+1, заменить цветные пиксели на чанки.
    Однобитные пиксели внутри чанок получаются после сравнения цвета и соответствующего элемента матрицы.
    Вообще я хотел сделать трехмерный чаночный фрактал. Поэтому уже готовые рисунки не годились. А нужна была формула их генерации, что бы потом добавить ей 3-е измерение.

    Ну то есть есть чанк (кубик 4х4х4), в нем каждый пиксель это тоже чанк, в котором каждый пиксель тоже чанк и т.п.

  11. #20

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,101
    Спасибо Благодарностей отдано 
    1,333
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    151 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это интересно!
    Для начала надо изобрести 3Д паттерн 2х2х2.

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

    Возможно (((0,4),(6,2)),((3,7),(5,1)))

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

    А в формулу добавим координату:
    e(n,x,y,z)=e(n-1,x div 2,y div 2,z div 2)+e(1,x mod 2,y mod 2,z mod 2)*8^(n-1)

Страница 2 из 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

Ваши права

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