POV-Ray : Newsgroups : povray.general : Options for drawing curves on surfaces : Re: Options for drawing curves on surfaces Server Time
29 Jul 2024 04:28:27 EDT (-0400)
  Re: Options for drawing curves on surfaces  
From: Alain
Date: 8 Mar 2013 18:25:03
Message: <513a734f$1@news.povray.org>

> Hi all,
>
> I'm writing up my lecture notes for a differential geometry class and attempting
> to render some of the more subtle graphics in PoVRay.
>
> Here are two samples:
>
> http://dl.dropbox.com/u/46424505/poinc_modelh.png
>
> http://dl.dropbox.com/u/46424505/octo.png
>
> The first example illustrates an issue.  As you can see in the picture, there is
> a hyperboloid, and I'm attempting to draw some curves on the hyperboloid.
>
> I'm wondering what are some more effective ways to do this.  One way to go would
> be to make the curve on the surface just another hyperboloid, but I could crop
> it by some planes to make it a thin-enough strip that it would approximate a
> curve.  But ideally I want the curve to have a thickness.  In the linked file
> poinc_modelh.png, the curve is a rather explicit parametric surface.  But with
> radiosity, it can take my 8-core system 6 days to render an image like the one
> above.  I'd like the render-time to be faster, just so tweaking the image
> doesn't take so long. Even with low quality the render time is still fairly slow
> with the parametric surface.
>
> One option would be to make the curve out a sphere-cylinder-sphere chain, with
> several hundred spheres.  This is pretty fast, but is there a tidy way to
> automate the generation of that in PoV script?  When I was younger I'd just
> write a C++ script to generate the PoV script but I'm hoping there's a tidy way
> to do this in PoVRay itself.  Of course, a problem with this is I'd have to
> appropriately crop the spheres if I wanted the effect to be seamless (and the
> curves partially transparent).
>
> Are there any other good options I should be thinking of?
>
>
>
>

The parametric is possibly the slowest primitive. Using precompute with 
the larger value possible can make things faster (the max is 20: 
precompute 20 x,y,z). Use a max_gradiant as low as possible without 
causing holes or steppings. Make the contained_by object as tight as 
possible.

You may look at isosurface. They are often faster than parametrics for 
the same actual shape. In your case, adding "open" should be preferable 
so that the container don't show.

You may also look at the quadric. In "shapes_old.inc" you find some 
predefined shapes like paraboloids and hyperboloids.
A sample:
/* y - x^2 + z^2 = 0 */
#declare Hyperboloid =
  quadric {<-1,  0,  1>, < 0,  0,  0>, < 0,  1,  0>, 0 }




Alain


Post a reply to this message

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