The Persistence of Vision Raytracer (POV-Ray).

This is the legacy Bug Tracking System for the POV-Ray project. Bugs listed here are being migrated to our github issue tracker. Please refer to that for new reports or updates to existing ones on this system.

Attached to Project: POV-Ray
Opened by Sven Geier - 2011-05-06
Last edited by William F Pokorny - 2016-11-16

FS#202 - Numerical oddities in Julia_Fractal

I understand that some things have changed in the way certain computations in POV-Ray decide when something is “good enough” and I think this is biting me in Julia_Fractal (where, of course, the highest-resolution computations are needed).

The bug has been posted here:


Including a short .pov file and instructions that reproduce it.

(It pops up in other configurations and view angles as well, but this one captures in in a way that makes it clear it’s a bug: the distance of the camera from the origin appears to change the shape of the rendered object).

This appeared first on a Windows Server 2003 machine, it is apparently confirmable on at least one other system as per that thread.

Grimbert Jérôme commented on Saturday, 07 May 2011, 08:08 GMT

Just to have all resources here, the relevant code:
There is something about cam_distance changing from 0.7 for 0.5

#version 3.7;

#include "functions.inc"
global_settings { assumed_gamma 2.2 }

#declare cam_distance = 0.7;

camera { angle 45
  location  <10, .5, 0> * cam_distance
  look_at   <0, 0,  -.5>
  right     x*640/400
  rotate <0,-5,0>

light_source { 0 color rgb 1 spotlight
  translate <80, 80, -40> point_at 0 }
light_source { 0 color rgb <2,1,0> translate <-20, 40, -20> }
sky_sphere { pigment { gradient -y }}

julia_fractal{ <-1.483,0,-0.0,-0.025>
   quaternion sqr max_iteration 12 precision 500
     pigment{ color rgb 0.7}
     finish { phong .6 reflection {.6 metallic }}
   scale 3
   rotate <0,110,-45>
Grimbert Jérôme commented on Saturday, 07 May 2011, 09:07 GMT

Please notice: with 0.5 as cam_distance, the camera is inside the bounding box of the fractal

Min : -9.680,-9.680,-7.690
Max : 9.680,9.680,7.690

Which means the camera is probably in the object too.

Using a camera 10 time further (and an angle 10 time narrow, which is a different view) does not produce the same issue.

With original camera, and cam_distance = 0.5+clock/5, there is a visible clipping on frame 14 of 31 (+KI0 +KF1 +KFI0 +KFF30 +H400 +W640)
That's cam_distance 0.59333 , with a camera at 5.911,0.297,0.517

Christoph Lipka commented on Monday, 09 May 2011, 08:46 GMT

So we probably do have a (pretty old) bug that causes unexpected clipping of fractals when the camera is inside the bounding box.

(No, the camera is not inside the "object" (i.e. part of the actual julia set); that would look much different. If you'd approximate the julia set with tori you'd most certainly not get any clipping.)

Sven Geier commented on Monday, 09 May 2011, 19:34 GMT

Yeah, if you copy the Axis_ and AxisXYZ macros from one of the the Basic_Scene_M... files and modify the POV file like this:

union { 
   julia_fractal{ <-1.483,0,-0.0,-0.025>
   object{ AxisXYZ( 3.5, 3.5, 3.5, Texture_A_Dark, Texture_A_Light)}
   rotate <0,110,-45>

you can see that the object itself only extends to ~1.5 units in the y- and z- directions. Also the axes themselves (i.e. the cylinders that are drawn to represent them) are not clipped, only the object. (image attached)

HOWEVER this cannot really be clipping of the object by the camera plane, (at least not the way I understand clipping) since the rings *close* when you move the camera closer. I.e. there is 'clipping' when the camera is moved away from the object (larger cam_distance) but it goes away when I move the camera closer in. Moving the camera ten times farther and making the angle ten times closer does NOT resolve this.

If anything, apparently I need to move the camera even closer in to prevent this.

At cam_distance=0.4 (and angle=60) the object looks like I would expect a Julia set to look like, at cam_distance=0.5 the outer ring starts breaking up and at cam_distance=0.7 (and angle=45) it is wide open. (other image attached for comparison)

Sven Geier commented on Friday, 13 May 2011, 01:51 GMT

Here's a small animation, that shows the problem not just in the large ring, but also in the smaller ones.

The only thing that changes with clock is the camera location; I am letting it intentionally go *through* the large ring on the way "out":

#declare cam_distance = 0.6 + 0.55*cos(clock/180*pi);
#declare z_a = 5*sin(clock/180*pi);
camera { angle 60
  location  <10, .5, z_a> * cam_distance 

the rest is as posted before(clock obviously goes 1..360);

If this was an isosurface{}, I would say the max_gradient needs to be higher.

Christoph Lipka commented on Thursday, 25 August 2011, 14:51 GMT

@thorsten: setting you to responsible as you claim the status is “Investigating”

Thorsten Fröhlich commented on Thursday, 25 August 2011, 16:02 GMT

That was an editing error.

William F Pokorny commented on Wednesday, 16 November 2016, 14:17 GMT

Now tracked on github as issue #150.


Available keyboard shortcuts


Task Details

Task Editing