|
|
I know this is an old thread, but:
Mathematically, there are at least two "natural" ways to consider
transforming a warp. One is by composition:
f(W) = f o W [do W to whatever you are acting on, then do
f]
this is already available by doing one warp, then another.
The other is by conjugation - call this f*:
f*(W) = f o W o f-inverse [do the inverse of f then do W
then do f]
This has nice properties, for instance
f*(W)(fX) = f(WX) = f(W)(X).
However, you can always get
f(W)(X)
directly. While it might be useful to be able to compute f*(W)(Y) for Y not
equal to fX for any known X, there's a problem: warps may be uninvertible.
Rotation, translation, and almost all scalings are invertible. For
these, conjugation can be written as a macro if anybody needs to. (But
carefully: rotate -Vector does not in general undo rotate Vector)
The black hole warp is probably invertable in theory, but perhaps not in
POV - I'm not sure if its inverse is a black hole warp as well or not. The
repeat warp may be invertible or not depending on the relationship between
the two vectors that define it; if it is, another repeat warp can invert it.
The turbulence warp is *not* invertible in general - it can make some of the
original pattern vanish completely. Below a certain strength this won't
happen.
Even when it's 1-1, POV won't invert it. (Something I've never tried -
if POV takes its usual "an it harm none, do what ye will" philosophy, it
should be possible to give a negative turbulence strength and get an
approximate inverse; as the size goes to 0, the error should go to 0
quadratically.)
An interesting thought: is there any nice *fast* noise function with an
inverse that is also a nice fast noise function? That would allow a warp to
be conjugated with turbulence. An obvious point is that if the fractal
nature of the noise were achieved by composing simple warps at different
octaves, the inverse would compose the octaves in the opposite order.
-Robert Dawson
Post a reply to this message
|
|