POV-Ray : Newsgroups : povray.binaries.images : Ringworld re-re-revisited : Re: Ringworld re-re-revisited Server Time
29 Apr 2024 16:37:49 EDT (-0400)
  Re: Ringworld re-re-revisited  
From: Ron M
Date: 30 Oct 2005 02:42:43
Message: <43647A2D.2020605@cheapcomplexdevices.com>
Alain wrote:
>
> You need 128 bit FPU!

Or 256-bit fixed point.  The Java3D docs have the interesting
observation that practically all interesting physical dimensions
can be expressed in 256-bit fixed point with the fixed "decimal"
point right at bit 128.

Table 4-1 Java 3D High-Resolution Coordinates
2n Meters 	Units
87.29	Universe (20 billion light years)
69.68	Galaxy (100,000 light years)
53.07	Light year
43.43	Solar system diameter
23.60	Earth diameter
10.65	Mile
9.97	Kilometer
0.00	Meter
-19.93	Micron
-33.22	Angstrom
-115.57	Planck length

> It can be emulated, but it will take a LOT more time to do the maths, 
> leading to proebitive render time.

What Java3D does is makes only the bottom-most node in the scene graph
use this (slow but accurate) 256-bit fixed-point representation, and
all sub-branches in the scene graph use something small-and-fast
(floats? doubles?).

When doing math between objects within the same sub-graph of the
whole scene, it never needs to touch the slow-256-bit-fixed-point
matrices; so speed is unaffected. When doing math across
scene subgraphs rooted on two different 256-bit root nodes
I think they had clever ways of still doing most of the math
in floating point and minimizing the big integer match while
retaining precision.

I don't know if these tricks would make any sense in a ray tracer, though.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.