| 
  | 
I've been using Chris Colefax's wonderful spline macro.
However, I have a problem. When I try to fill the array of values using a #while
loop, a parse error is generated, "Insufficent number of initializers." Here is
what I am doing:
#declare N = 5;  #declare J = 1;
#declare MyPath = create_spline (
array[ N ]{
 #while( J<=5)
 <cos(2*pi*J/N), 1, sin(2*pi*J/N)>
 #declare J = J + 1;
 #end
},
spline_loop (no) + spline_tension (-1) + spline_sampling (2) +  spline_scale (5)
)
Why the error? How can I use a #while loop to make the values needed by
create_spline?
Thanks.
 Post a reply to this message 
 | 
  | 
 | 
  | 
Looks like the problem is in the array declaration; if I declare the array using
that #while loop before I put it in create_spline(), it blows up on me, too.
// generates error
#local N = 5;
#local x = 1;
#declare my_array = array[ N ] {
  #while( x <= N )
  ...
  #local x = x + 1; #end
}
Probably have to do it the old fashioned way:
#declare my_array = array[ N ]
#local i = 0; #while( i < N )
   #declare my_array[ i ] = ....
#local i = i + 1; #end
I may be wrong.  It's happened before (more times than I care to remember)...
--
Dan
GoofyGraffix.com
 Post a reply to this message 
 | 
  | 
 | 
  | 
Dan Byers nous apporta ses lumieres en ce 2008/03/20 15:03:
> Looks like the problem is in the array declaration; if I declare the array using
> that #while loop before I put it in create_spline(), it blows up on me, too.
> 
> // generates error
> #local N = 5;
> #local x = 1;
> #declare my_array = array[ N ] {
>   #while( x <= N )
>   ...
>   #local x = x + 1; #end
> }
> 
> Probably have to do it the old fashioned way:
> 
> #declare my_array = array[ N ]
> #local i = 0; #while( i < N )
>    #declare my_array[ i ] = ....
> #local i = i + 1; #end
> 
> I may be wrong.  It's happened before (more times than I care to remember)...
> 
> --
> Dan
> GoofyGraffix.com
> 
> 
> 
> 
Guide line for the naming of user variables: Always start the variable name with 
an uper case letter. It prevent name conflicts with reserved words and 
predefined variables names. Those always start with a lower case leter.
Here, "x" is a predefined variable. You can't define your variables using that 
name. Use "X" instead. Even if "i" is not reserved, it's beter to use "I" as a 
variable name.
Reserved single leters variable names: t, u, v, x, y and z
-- 
Alain
-------------------------------------------------
You know you've been raytracing too long when whenever you write include, even 
in essays, etc, you always add a "#".
 Post a reply to this message 
 | 
  |