С оригинальной, приведённой по моей ссылке
Разобраться с оригинальной. На хабре откуда то взяли критерии выбора и пределы для a,b,c,d,e,f.
“такие коэффициенты несложно. При этом надо проверить 3 условия:”
https://habrahabr.ru/post/251537/Вот как понял:
В расчете доступны 49 нелинейных преобразований. Из них используется N, порядковый номер i храниться в массиве V[i].
-фот 158
Uij это вектор от (0,0) до (1,1) или скаляр? Почему два индекса? Может это массив векторов? Т.е. там нужен массив векторов 2 столбца и 20 строк ?
20 это макс итераций наверно это принято j?
Array0[i][j]
Во всех псевдокодах итераций =20 значит max j=20.
Какие брать a,b,c,d,e,f? Где их критерии выбора в тексте? Где пределы выбора? Какой тип переменных? Если у них индексы i то это массив 6 столбцов N строк?
Код:
Array1=
{
{a,b,c,d,e,f},
{a,b,c,d,e,f},
{a,b,c,d,e,f}
….
}
-Фот 160
Вот тут описаны Альфа, Бета,Гамма… с индексами i.
Значит им тоже нужен массив 6 столбцов N строк?
Код:
Array2=
{
{a,b,c,d,e,f},
{a,b,c,d,e,f},
{a,b,c,d,e,f}
….
}
Расчет:
Все эти следующие три пронумерованных шага это одна функция Func(a,b) и входит в пункт 4 Color.
////////////////
3) Variations.
Принять параметры (a,b).
x_old=a
y_old=b
j=0
Делать итерации пока j<20
Код:
{
j++
i-взять случайное целое от 1 до N
(x_new, y_new) = Array0[i][j] *V[j]*
(
Array1[i][1]*x_old+Array1[i][2]*y_old+Array1[i][3],
Array1[i][4]*x_old+Array1[i][5]*y_old+Array1[i][6]
)
x_old=x_new
y_old=y_new
}
Вернуть (x_old, y_old).
////////////////
////////////////
4) Post Transforms
Прочитать (x_old, y_old)
j=0
Делать итерации пока j<20
Код:
{
j++
i-взять случайное целое от 1 до N
(x_new, y_new) =
(
Array2[i][1]*x_old+Array2[i][2]*y_old+Array2[i][3],
Array2[i][4]*x_old+Array2[i][5]*y_old+Array2[i][6]
)
x_old=x_new
y_old=y_new
}
Вернуть (x_old, y_old).
////////////////
////////////////
3) расчет Final Transforms
-фот162
Кто такая F final? Это просто одна из трансформаций? Где ее уравнение? Вот тут непонятно, по логике нелинейная камера как поясняет автор
-фот 163
это наверно нелинейная трансформация без настроек? Или как? Или делайте как хотите?
Т.е. например F final (x, y) это:
(x_new, y_new) =V[j]* (x_old, y_old) ?
Или
(x_new, y_new) = Array0[i][j] *V[j]* (x_old, y_old) ?
Или
Задать отдельно a0,b0,c0,d0,e0,f0. Как их выбрать?
(x_new, y_new) =(a0*x_old+b0*y_old+c0, d0*x_old+e0*y_old+f0 ) ?
Прочитать (x_old, y_old)
j=0
Делать итерации пока j<20
Код:
{
j++
i-взять случайное целое от 1 до N
(x_new, y_new) = ???
x_old=x_new
y_old=y_new
}
Вернуть (x_old, y_old).
////////////////
////////////////
4)Coloring
Массив 4-мерных векторов С[i] флоат длинной N .
(x_old, y_old) = случайный вектор от (-1,-1) до (1,1).
С это цвет RGBA абстрактно одним числом? Все 4 параметра случайны и уникальны.
С=Взять 4 случайных флоат от 0 до 1
Прочитать (x_old, y_old)
j=0
Делать итерации пока j<20
Код:
{
j++
i-взять случайное целое от 1 до N
(x_new, y_new) = Func(x_old, y_old)
x_old=x_new
y_old=y_new
С=(С+Сi)/2 //это 4 мерный вектор
}
Вернуть (x_old, y_old, С).
-фот164
Непонятно. Кто такая Cfinal тоже как Ffinal?
////////////////