krt17, в каждой следующей матрице в 4 раза больше чисел. Напрашивается не 2 в степени, а 4^(n-1).
krt17, в каждой следующей матрице в 4 раза больше чисел. Напрашивается не 2 в степени, а 4^(n-1).
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
число столбцов/строк 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.
Попробовал перевести на PureBasic. Получается что-то не то...
PHP код:Global Dim Pattern.l(16,16)
Procedure elem(n,y,x)
; Print( Str(n) )
; Print( Str(x) )
; PrintN( Str(y) )
If n=1
ProcedureReturn Pattern(y+1,x+1)
Else
ProcedureReturn elem(n-1, Round(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.
Для деления воспользуйся >> , видимо что то там с округлением суровое . Я не в курсе что там с басиком, на 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
Это интересно!
Для начала надо изобрести 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)
Раз пошел такой замес обобщу
d - измерения
v - вектор в d пространстве ( грубо массив координат v(d))
остальное как прежде
e(n,v)=e(n-1,v div r)+e(1,v mod r)*r^d(n-1)
можно я думаю обобщить для случая не равностороннего паттерна если это нужно
Ещё-бы придумать алгоритм генерации наиболее небанальных паттернов, для полной автоматизации.![]()
А чем не устраивает Floyd-Steinberg dithering? Красивей же.
Не совсем по теме
просто оставлю это сдеся
тк прикольно и стабильно выглядит
https://forums.tigsource.com/index.p...742#msg1363742
- - - Добавлено - - -
Как бы такого добиться
одной постобработкой...
...для 3дэ
можно попробовать чб текстуры с жестким мипмапингом
Последний раз редактировалось NEO SPECTRUMAN; 28.05.2019 в 17:22.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)