POV-Ray : Newsgroups : povray.advanced-users : Parametrics and isosurfaces : Re: Parametrics and isosurfaces Server Time
3 May 2024 21:24:56 EDT (-0400)
  Re: Parametrics and isosurfaces  
From: clipka
Date: 2 Aug 2016 11:56:01
Message: <57a0c291$1@news.povray.org>
Am 02.08.2016 um 04:13 schrieb Bald Eagle:

> I'll try.  It's something I'm exploring, so I'm no expert.
> But there seemed to be a lot of RHO's being used, and when I thought about an
> easy way to do certain things, having a third changing variable seemed like it
> would be useful, and I wasn't sure how else I'd go about it.
[...]
> http://www.microscopy-uk.org.uk/mag/imgjan06/Image13.jpg

That image does not show a single three-parameter parametric surface,
but rather a "family" of parametric surfaces: Their parametric equations
are similar, but differ in a certain constant.

In a technical sense, this constant (c) can be considered another
parameter, but it differs fundamentally from the two parameters (u,v)
that every parametric has: While u and v are varied within an individual
instance of the parametric surface and in a contiguous fashion to create
a contiguous set of points (the surface), c is varied only between
different instances of the parametric surface and only in discrete steps.

Due to this property of the c parameter, there is no need to implement
it within POV-Ray's parametric surface primitive itself: You can simply
use multiple parametrics instead, using equations with different
constants. Of course nothing stops you from defining those equations in
terms of a common three-parameter function, and possibly using a loop to
vary the third parameter, like so:

    // The common function set
    #declare BaseFnX = function(u,v,c) {...}
    #declare BaseFnY = function(u,v,c) {...}
    #declare BaseFnZ = function(u,v,c) {...}

    // The parametric family
    union {
      #for(C,C1,C2,CStep)
        // An individual parametric
        parametric {
          // The actual functions to use
          function { BaseFnX(u,v,C) }
          function { BaseFnY(u,v,C) }
          function { BaseFnZ(u,v,C) }
          <U1,V1>, <U2,V2>
          ...
        }
      #end
    }


Post a reply to this message

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