POV-Ray : Newsgroups : povray.beta-test : spline & macro Server Time
31 Jul 2024 06:18:52 EDT (-0400)
  spline & macro (Message 1 to 5 of 5)  
From: Mael
Subject: spline & macro
Date: 10 Sep 2001 05:28:16
Message: <3b9c87b0$1@news.povray.org>
i ve read that splines are still in developement but maybe this can help..

i get a parse error when using a spline in a macro

ex :

camera { location <0,2,-2> look_at 0 }
light_source { <-5,30,-10> 1 }

#declare MySpline =
  spline {
    cubic_spline
    -.25, <0,0,-1>
    0.00, <1,0,0>
    0.25, <0,0,1>
    0.50, <-1,0,0>
    0.75, <0,0,-1>
    1.00, <1,0,0>
    1.25, <0,0,1>
  }

#macro mymacro(apoint)
  apoint
#end

sphere { 0,.1 translate mymacro(MySpline(.5)) pigment {color rgb 1}}


gives :

sphere { 0,.1 translate mymacro(MySpline( <----ERROR
Parse Error: Expected ')', ( found instead

however if i add parenthesis it works

sphere { 0,.1 translate mymacro((MySpline(.5))) pigment {color rgb 1}}

pov3.5b1 win2000 athlon 900MHz 256MB

M


Post a reply to this message

From: Mark Wagner
Subject: Re: spline & macro
Date: 11 Sep 2001 00:24:02
Message: <3b9d91e2@news.povray.org>
Mael wrote in message <3b9c87b0$1@news.povray.org>...
>
>sphere { 0,.1 translate mymacro(MySpline( <----ERROR
>Parse Error: Expected ')', ( found instead


This is because POV-Ray comes across the "MySpline", and thinks you are
passing the entire spline to the macro.  Then it finds the parenthesis, and
gets confused.

>however if i add parenthesis it works
>
>sphere { 0,.1 translate mymacro((MySpline(.5))) pigment {color rgb 1}}


This time, POV-Ray finds the parenthesis, and is expecting a number or
vector.  As a result, when it finds the "MySpline", it evaluates the spline
at 0.5, and passes the result to the macro.

Because of the way the POV-Ray parser works, I don't think this behavior can
easily be changed.

--
Mark


Post a reply to this message

From: Ron Parker
Subject: Re: spline & macro
Date: 11 Sep 2001 14:55:33
Message: <slrn9psnh7.mhj.ron.parker@fwi.com>
On Tue, 11 Sep 2001 00:24:22 -0400, Mark Wagner wrote:
>This time, POV-Ray finds the parenthesis, and is expecting a number or
>vector.  As a result, when it finds the "MySpline", it evaluates the spline
>at 0.5, and passes the result to the macro.
>
>Because of the way the POV-Ray parser works, I don't think this behavior can
>easily be changed.

Maybe, maybe not.  It might be possible to fix it without breaking too much.

-- 
#macro R(L P)sphere{L F}cylinder{L P F}#end#macro P(V)merge{R(z+a z)R(-z a-z)R(a
-z-z-z a+z)torus{1F clipped_by{plane{a 0}}}translate V}#end#macro Z(a F T)merge{
P(z+a)P(z-a)R(-z-z-x a)pigment{rgbt 1}hollow interior{media{emission T}}finish{
reflection.1}}#end Z(-x-x.2y)Z(-x-x.4x)camera{location z*-10rotate x*90}


Post a reply to this message

From: Mark Wagner
Subject: Re: spline & macro
Date: 12 Sep 2001 00:16:09
Message: <3b9ee189@news.povray.org>
Ron Parker wrote in message ...
>On Tue, 11 Sep 2001 00:24:22 -0400, Mark Wagner wrote:
>>This time, POV-Ray finds the parenthesis, and is expecting a number or
>>vector.  As a result, when it finds the "MySpline", it evaluates the
spline
>>at 0.5, and passes the result to the macro.
>>
>>Because of the way the POV-Ray parser works, I don't think this behavior
can
>>easily be changed.
>
>Maybe, maybe not.  It might be possible to fix it without breaking too
much.


Would it also be possible to fix things so that a spline will return a 3D
vector under normal circumstances, but a 5D vector when used in a color?
The spline interpolation code is quite capable of working with 5D vectors.

--
Mark


Post a reply to this message

From: Ben Chambers
Subject: Re: spline & macro
Date: 14 Sep 2001 12:01:28
Message: <3ba229d8@news.povray.org>
"Mark Wagner" <mar### [at] gtenet> wrote in message
news:3b9ee189@news.povray.org...
> Would it also be possible to fix things so that a spline will return a 3D
> vector under normal circumstances, but a 5D vector when used in a color?
> The spline interpolation code is quite capable of working with 5D vectors.
>
> --
> Mark

Perhaps it would be better to implement this as a macro, ie,

#macro Spline_Cubic(a,b,c,d,t)
 #declare a = a+(b-a)*t;
 #declare b = b+(c-b)*t;
 #declare c = c+(d-c)*t;
 #declare a = a+(b-a)*t;
 #declare b = b+(c-b)*t;
 #declare a = a+(b-a)*t;
 a
#end

This way, it could work with any size vectors.  IIRC, several "features" are
now being included as macros, both for their versatility and the ease of
changing them; this wouldn't be too great an addition, I believe.

...Chambers


Post a reply to this message

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