|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
I've been battling with this for some hours now so thought it time to cry Help!
Trying to place objects along a helix using a spline, code as below. When I
activate the the commented out bit (last section of code) POV crashes every
time. Any ideas anyone?
Thanks, Geo
// generate helix -----------------------------------------
#declare R1=3.5; //outer radius
#declare F1=0.2; //point spacing
#declare N=100; //points on helix 200
#declare H=20; //tightness
//set up helical spline -------------------------------------------
#declare P2 = array[N][3];
#declare j=0;
#while (j<N)
#declare P2[j][0] = (j*H/N)-(H/2);
#declare P2[j][1] = R1*sin(F1*j);
#declare P2[j][2] = R1*cos(F1*j);
#declare j=j+1;
#end
#declare j=0;
#while (j<N)
#declare helix_spline1 =
spline { natural_spline
j/N, <P2[j][0],P2[j][1],P2[j][2]>
#debug concat("helix = ", str(j/N,0,-1)," ", str(P2[j][0],0,-1)," ",
str(P2[j][1],0,-1)," ", str(P2[j][2],0,-1), "\n")
#declare j=j+1;
}
#end
//place objects along helix ---------------------------------------
#declare helix_object =
sphere { <0,0,0>, 0.2
texture {pigment { Green } finish { ambient 0.1 diffuse 0.5 phong
..4}
}
}
/*
#declare cnt=0;
#while (cnt<1)
object { helix_object
translate helix_spline1(cnt )
}
#declare cnt = cnt + 0.1;
#end
*/
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"geogeo" <geo### [at] mecolcouk> wrote:
> I've been battling with this for some hours now so thought it time to cry Help!
> Trying to place objects along a helix using a spline, code as below. When I
> activate the the commented out bit (last section of code) POV crashes every
> time. Any ideas anyone?
> Thanks, Geo
>
> // generate helix -----------------------------------------
> #declare R1=3.5; //outer radius
> #declare F1=0.2; //point spacing
> #declare N=100; //points on helix 200
> #declare H=20; //tightness
>
> //set up helical spline -------------------------------------------
> #declare P2 = array[N][3];
> #declare j=0;
> #while (j<N)
> #declare P2[j][0] = (j*H/N)-(H/2);
> #declare P2[j][1] = R1*sin(F1*j);
> #declare P2[j][2] = R1*cos(F1*j);
> #declare j=j+1;
> #end
>
> #declare j=0;
> #while (j<N)
> #declare helix_spline1 =
> spline { natural_spline
> j/N, <P2[j][0],P2[j][1],P2[j][2]>
> #debug concat("helix = ", str(j/N,0,-1)," ", str(P2[j][0],0,-1)," ",
> str(P2[j][1],0,-1)," ", str(P2[j][2],0,-1), "\n")
> #declare j=j+1;
> }
> #end
>
> //place objects along helix ---------------------------------------
> #declare helix_object =
> sphere { <0,0,0>, 0.2
> texture {pigment { Green } finish { ambient 0.1 diffuse 0.5 phong
> ..4}
> }
> }
>
> /*
> #declare cnt=0;
> #while (cnt<1)
> object { helix_object
> translate helix_spline1(cnt )
> }
> #declare cnt = cnt + 0.1;
> #end
> */
Have now resolved this, seems the term natural_sline which I got from a tutorial
is the problem, changed it to quardratic_spline then no more crashes.
However the while loop surrounding the spline is flawed and doesn't define the
spline at all but a load of single point splines! Can't yet see a way to do this
without tediously defining each point - any ideas anyone?
Geo
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"geogeo" <geo### [at] mecolcouk> wrote:
> "geogeo" <geo### [at] mecolcouk> wrote:
> > I've been battling with this for some hours now so thought it time to cry Help!
> > Trying to place objects along a helix using a spline, code as below. When I
> > activate the the commented out bit (last section of code) POV crashes every
> > time. Any ideas anyone?
> > Thanks, Geo
> >
> > // generate helix -----------------------------------------
> > #declare R1=3.5; //outer radius
> > #declare F1=0.2; //point spacing
> > #declare N=100; //points on helix 200
> > #declare H=20; //tightness
> >
> > //set up helical spline -------------------------------------------
> > #declare P2 = array[N][3];
> > #declare j=0;
> > #while (j<N)
> > #declare P2[j][0] = (j*H/N)-(H/2);
> > #declare P2[j][1] = R1*sin(F1*j);
> > #declare P2[j][2] = R1*cos(F1*j);
> > #declare j=j+1;
> > #end
> >
> > #declare j=0;
> > #while (j<N)
> > #declare helix_spline1 =
> > spline { natural_spline
> > j/N, <P2[j][0],P2[j][1],P2[j][2]>
> > #debug concat("helix = ", str(j/N,0,-1)," ", str(P2[j][0],0,-1)," ",
> > str(P2[j][1],0,-1)," ", str(P2[j][2],0,-1), "\n")
> > #declare j=j+1;
> > }
> > #end
> >
> > //place objects along helix ---------------------------------------
> > #declare helix_object =
> > sphere { <0,0,0>, 0.2
> > texture {pigment { Green } finish { ambient 0.1 diffuse 0.5 phong
> > ..4}
> > }
> > }
> >
> > /*
> > #declare cnt=0;
> > #while (cnt<1)
> > object { helix_object
> > translate helix_spline1(cnt )
> > }
> > #declare cnt = cnt + 0.1;
> > #end
> > */
>
> Have now resolved this, seems the term natural_sline which I got from a tutorial
> is the problem, changed it to quardratic_spline then no more crashes.
> However the while loop surrounding the spline is flawed and doesn't define the
> spline at all but a load of single point splines! Can't yet see a way to do this
> without tediously defining each point - any ideas anyone?
> Geo
Your loop body has some parts that are supposed to be loop invariant. The
declaration and closing brace should be outside of the loop. Note that this may
require trickery to get your commas right.
Consider:
#declare j=0;
#declare helix_spline1 =
spline { natural_spline
#while (j<N)
j/N, <P2[j][0],P2[j][1],P2[j][2]>
#debug concat("helix = ", str(j/N,0,-1)," ", str(P2[j][0],0,-1)," ",
str(P2[j][1],0,-1)," ", str(P2[j][2],0,-1), "\n")
#declare j=j+1;
#end
} // closing brace outside
Your old code was just redefining helix_spline1 as a single point spline
repeatedly instead of building the whole spline from the array.
-Reactor
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Reactor" <rea### [at] hotmailcom> wrote:
> "geogeo" <geo### [at] mecolcouk> wrote:
> > "geogeo" <geo### [at] mecolcouk> wrote:
> > > I've been battling with this for some hours now so thought it time to cry Help!
> > > Trying to place objects along a helix using a spline, code as below. When I
> > > activate the the commented out bit (last section of code) POV crashes every
> > > time. Any ideas anyone?
> > > Thanks, Geo
> > >
> > > // generate helix -----------------------------------------
> > > #declare R1=3.5; //outer radius
> > > #declare F1=0.2; //point spacing
> > > #declare N=100; //points on helix 200
> > > #declare H=20; //tightness
> > >
> > > //set up helical spline -------------------------------------------
> > > #declare P2 = array[N][3];
> > > #declare j=0;
> > > #while (j<N)
> > > #declare P2[j][0] = (j*H/N)-(H/2);
> > > #declare P2[j][1] = R1*sin(F1*j);
> > > #declare P2[j][2] = R1*cos(F1*j);
> > > #declare j=j+1;
> > > #end
> > >
> > > #declare j=0;
> > > #while (j<N)
> > > #declare helix_spline1 =
> > > spline { natural_spline
> > > j/N, <P2[j][0],P2[j][1],P2[j][2]>
> > > #debug concat("helix = ", str(j/N,0,-1)," ", str(P2[j][0],0,-1)," ",
> > > str(P2[j][1],0,-1)," ", str(P2[j][2],0,-1), "\n")
> > > #declare j=j+1;
> > > }
> > > #end
> > >
> > > //place objects along helix ---------------------------------------
> > > #declare helix_object =
> > > sphere { <0,0,0>, 0.2
> > > texture {pigment { Green } finish { ambient 0.1 diffuse 0.5 phong
> > > ..4}
> > > }
> > > }
> > >
> > > /*
> > > #declare cnt=0;
> > > #while (cnt<1)
> > > object { helix_object
> > > translate helix_spline1(cnt )
> > > }
> > > #declare cnt = cnt + 0.1;
> > > #end
> > > */
> >
> > Have now resolved this, seems the term natural_sline which I got from a tutorial
> > is the problem, changed it to quardratic_spline then no more crashes.
> > However the while loop surrounding the spline is flawed and doesn't define the
> > spline at all but a load of single point splines! Can't yet see a way to do this
> > without tediously defining each point - any ideas anyone?
> > Geo
>
>
>
> Your loop body has some parts that are supposed to be loop invariant. The
> declaration and closing brace should be outside of the loop. Note that this may
> require trickery to get your commas right.
> Consider:
>
> #declare j=0;
> #declare helix_spline1 =
> spline { natural_spline
> #while (j<N)
> j/N, <P2[j][0],P2[j][1],P2[j][2]>
> #debug concat("helix = ", str(j/N,0,-1)," ", str(P2[j][0],0,-1)," ",
> str(P2[j][1],0,-1)," ", str(P2[j][2],0,-1), "\n")
> #declare j=j+1;
> #end
> } // closing brace outside
>
>
> Your old code was just redefining helix_spline1 as a single point spline
> repeatedly instead of building the whole spline from the array.
>
> -Reactor
Yes, I realised the single point spline problem soon after I'd stopped it all
crashing, but couldn't get the loop structure right - so thanks, yours works
just fine. I'd patched around it by using debug to write all the spline points,
saving them as an inc then including the inc as part of the spline declaration.
Not very elegant but it worked!
Must say I'm really bowled over by this software. Been at it for a week now and
have two animations done as part of a video project I have in mind. POV is pure
magic.
And so nice to have backup when I get stuck,
thanks
Geo
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|