POV-Ray : Newsgroups : povray.general : splines-- unexpected comma requirement : splines-- unexpected comma requirement Server Time
29 Apr 2025 09:43:05 EDT (-0400)
  splines-- unexpected comma requirement  
From: Kenneth
Date: 28 Apr 2025 09:55:00
Message: <web.680f84e59120142be83955656e066e29@news.povray.org>
[running Windows 10]

(This might be old news?)
I was playing with splines recently, and came across a strange quirk when using
negative 'index' or parameter values for some of the points: Apparently, a comma
separator is needed after those points (otherwise a fatal error when the spline
is parsed), whereas positive-parameter points need no commas. This occurs in
both v3.7.0 and 3.8 beta 1. (As far as I know, there is no caveat or restriction
about creating points with negative index values.) The type of spline used--
linear, cubic etc-- has no effect on this behavior.

The documentation at "3.3.1.11 Spline" is somewhat unclear as to a *requirement*
for commas between separate points:

"The first item gives the type of interpolation [linear, cubic, etc]...
Following this are a number of float values each followed by a position vector,
all separated by commas." But the spline example there uses no comma separators,
and my own experience is that that are usually not needed.

With negative-index points, there appears to be a pattern(?) to the behavior.
Some examples:

This spline has only ONE negative-index point-- and parses OK as-is; no commas
between the points are needed:
#declare MY_SP_1 =
spline{
     natural_spline
    -0.3, < .3, .6, .5 >
     0, < -.52, -.36, -.59>
     0.5, < -1.0, .27, .68>,
     1.0, < .6, -.95, -.15>
     2.0, < -.75, -.52, -1.5>
     2.7, <.3,.5,2>
 }

This has TWO negative index points-- a comma is required after
the FIRST point only:
#declare MY_SP_2 =
spline{
     linear_spline
    -0.45, <.1,.3,-.1>,
    -0.3, < .3, .6, .5 >
     0, < -.52, -.36, -.59>
     0.5, < -1.0, .27, .68>
     1.0, < .6, -.95, -.15>
     2.0, < -.75, -.52, -1.5>
     2.7, <.3,.5,2>
 }

This one has TWO negative index points at the beginning (as above), plus
another one later-- a comma is required  after the FIRST point and another
*before* the later negative-index.
#declare MY_SP_3 =
spline{
     cubic_spline
   -0.45, <.1,.3,-.1>,
   -0.3, < .3, .6, .5 >
    0, < -.52, -.36, -.59>
    0.5, < -1.0, .27, .68>, // comma needed here, preceding the next
                            // negative index
   -1.0, < .6, -.95, -.15>
    2.0, < -.75, -.52, -1.5>
    2.7, <.3,.5,2>
 }


This one has THREE negative index points-- commas are required after the FIRST
and SECOND points:
#declare MY_SP_4 =
spline{
     cubic_spline
    -0.6, <.2,.1,.3>,
    -0.45, <.1,.3,-.1>,
    -0.3, < .3, .6, .5 >
     0, < -.52, -.36, -.59>
     0.5, < -1.0, .27, .68>
     1.0, < .6, -.95, -.15>
     2.0, < -.75, -.52, -1.5>
     2.7, <.3,.5,2>
 }


Post a reply to this message

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