Черновик

Переопределение пространства

Для переопределения оси может использоваться как только её прошлое значение p.x = p.x - 1.; Так и более сложная формула, зависящая от нескольких компонентов вектора: p.x = length(p.xyz) - 4.;

Иногда надо преобразовать сразу два компонента вектора. Например для перехода в полярные координаты надо чтобы в p.x попало length(p.xy)-4. а в p.y оказалось atan(p.y,p.x)/(PI*2.). Причём обе эти формулы зависят и от p.y и от p.x, значит надо вычислить оба этих значения одновременно. Иначе изменение одного компонента p, скажем, p.x повлияет на последующее вычисление p.y. К счастью в GLSL можно выполнить две трансформации одновременно:

p.xy = vec2(length(p.xy)-4., atan(p.y,p.x)/(PI*2.));

p.x = cylLarge(p); return cylSmall(p); https://bit.ly/3NNfiUT

Мы как бы говорим: изменение значения cylLarge теперь претваряется изменением p.x;