[comp.graphics] Dirty Little Tricks

ritter@versatc.UUCP (Jack Ritter) (06/08/89)

I've come up with a fast, approximation to
3D Euclidian distance ( sqrt(dx*dx+dy*dy+dz*dz) ).
  (It's probably not original, but .....)

1) find these 3 values: abs(dx), abs(dy), abs(dz).

2) Sort them (3 compares, 0-3 swaps)

3) Approx E.D. = max + (1/4)med + (1/4)min.
			(error: +/- 13%) 

	max +  (5/16)med + (1/4)min has  9% error.
	max + (11/32)med + (1/4)min has  8% error.

As you can see, only shifts & adds are used, and
it can be done with integer arithmetic.
It could be used in ray tracing as a preliminary
test before using the exact form.

We all have our dirty little tricks.

-- 
	      ->  B O Y C O T T    E X X O N    <-
   Jack Ritter, S/W Eng. Versatec, 2710 Walsh Av, Santa Clara, CA 95051
   Mail Stop 1-7.  (408)982-4332, or (408)988-2800 X 5743
   UUCP:  {ames,apple,sun,pyramid}!versatc!ritter