|
![](/i/fill.gif) |
"Jim Charter" <jrc### [at] msn com> wrote in message
news:44b8be57$1@news.povray.org...
> Skip Talbot wrote:
>> Is there a way to accurately, or quickly and fairly accurately, subdivide
>> a spline into equal lengths? I've written a macro ...
This seems to work OK.
#include "strings.inc"
#macro Split_Spline(SplA SplB begin_at stop_at rez stype)
#local Split = concat("#declare ",SplB," = spline {\n",stype,"\n");
#local c = -rez;
#while (c <= 1+rez)
#declare Split = concat(Split,str(c,1,3),",<",
vstr(3, ABC_spl(c * (stop_at - begin_at) + begin_at),
",", 0,3),">\n");
#local c = c + rez;
#end
#declare Split = concat(Split,"};\n");
Parse_String(Split)
#end
#declare ABC_spl = spline {
natural_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>
};
Split_Spline(ABC_spl, "AB_spl", 0, 0.5, 0.25, "natural_spline")
Split_Spline(ABC_spl, "BC_spl", 0.5, 1.0, 0.25, "natural_spline")
Post a reply to this message
|
![](/i/fill.gif) |