|
![](/i/fill.gif) |
"Robert McGregor" <rob### [at] mcgregorfineart com> wrote:
> Jim Holsenback <jho### [at] povray org> wrote:
> > On 03/31/2011 05:16 AM, Anthony D. Baye wrote:
> > > can someone help me with the following transform:
> > >
> > > #local s = 1 / (2 * (1 + sum(k,1,n, cos(2*pi*k/n)) ));
> >
> > Just a casual glance so I might be wrong, but I think you're misusing
> > the sum function
>
> Yep, try something like this, with a function wrapper for sum:
>
> #local fn = function(k,n) { sum(k,1,n, cos(2*pi*k/n)) }
> #local s = 1 / (2 * (1 + fn(1,2)));
>
> -------------------------------------------------
> www.McGregorFineArt.com
Though the docs don't seem to say so explicitly, it appears that the sum() and
prod() functions need to be in a function.
You actually don't need to pass the 'k' component in Robert's example:
#local fn = function(n){sum(k,1,n/4,cos(2*pi*k/n))}
Better yet, include the whole thing inside the function:
#local fn = function(n){1/(2*(1+sum(k,1,n/4,cos(2*pi*k/n))))}
Then you only need to call fn(n) in place of #declaring s.
Also note, declare this before your macro. As the macro gets called more than
once, it will try to redefine fn() and give you an error unless you #undef it
each time, but this is unecessary if you keep it outside the macro.
-tgq
Post a reply to this message
|
![](/i/fill.gif) |