[sci.math] Log of Quaternion / 3d Fractal raytracer / distance estimator

bungi@milton.u.washington.edu (Timothy J. Wood) (05/04/91)

   In 'Ray Tracing Deterministic 3-D Fractals' (John C. Hart, ACM
SIGGRAPH 89) a formula for estimating a lower bound on the distance from a
point in the space of quaternions to the surface of the 4-D fractal is
given as : 
            n
          |f (z)|                        n
  d(z) = ---------  log(f^n(z));  where f (z) is f(f(...(f(z))..)  with n "f's"
            'n
         2|f  (z)|


   I can handle the magnitudes, derivatives, and compositions, but what is
the log of a quaternion?  I have Hamilton's 'Elemente der Quaternionen'
(1882, and _very_ German), which has something like:

  lq = lTq + lUq

   which really doesn't tell _me_ much :)  What are T and U?  And why is it
define recursively?

   Am I to assume that the log of a quaternion is a real?  If not, then is
d(z) going to be a quaternion rather than a real?  How would that be a
'distance'?

   Any help on logs of quaternions or the distance estimator function would
be excellent... i'll even give you a copy of the software (distributed
fractal raytracer) when i'm done.  Oh drats.  it's going to be public
domain  :)

  Well, send me help anyway.

thanks
-- 
-------------------------------------------------------------------------------
        Timothy Wood : bungi@u.washington.edu, tjwood@cs.washington.edu
                   ... alice everyday brings sunshine ...

hart@uicbert.eecs.uic.edu (John Hart) (05/10/91)

Oops! Looking at equation (7) of Ray Tracing Deterministic 3-D Fractals
(Computer Graphics 23, 3 (1989) pp. 289-296) we have

d(z) = log G(z) sinh(G(z))/(2 e^G(z) |G'(z)|                          (7)

which is approximated using sinh(G(z)) = G(z) and e^G(z) = 1 for small G(z)
(values of z close to the set). Furthermore we replace G(z) with |f^n(z)|
giving us

d(z) = log |f^n(z)| |f^n(z)|/(2 |f'^n(z)|)                            (8)

which is the same as in the paper except that I forgot the absolute value
symbols for the log. Essentially, this is the same formula as given in The
Science of Fractal Images for complex values. I just tried it in the
quaternions and expected it to work. It does but I still remain clueless
as to why or how.

Good luck on your ray tracer. I never published the source code because it
was written and optimized for the Pixel Machine and is quite ugly. Its rather
straight forward and shouldn't be too difficult to prototype. To check your
results, try z^2 + 0.2809 + 0.53i (figure 1a) and z^2 - 1 (a surface of
revolution).

Alan Norton will be talking about these sets this year at SIGGRAPH at the
Fractal Models in Computer Graphics advanced course. His notes have some
pictures of quaternion Julia sets and a 3-D Mandelbrot set that have never
before been published.


-John C. Hart
 Electronic Visualization Laboratory
 EECS Dept. M/C 154
 University of Illinois at Chicago
 Chicago, IL 60680-4348
 office: (312)996-3002 lab: (312)996-5909
 hart@uicbert.eecs.uic.edu