![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Gail Shaw wrote:
>
> Does anyone know of a way to place objects at equal distances along
> a spline, short of trial and error?
My lspline3 include implements natural cubic splines where the
parameter points linearly along the length of the spline.
http://www.pp.htv.fi/kkivisal/lspline3.zip
_____________
Kari Kivisalo
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Kari Kivisalo" <ray### [at] engineer com> wrote in message
news:3BCD6601.2B58E441@engineer.com...
>
> My lspline3 include implements natural cubic splines where the
> parameter points linearly along the length of the spline.
>
Thanks, I'll take a look at that
Gail
--
*************************************************************************
* gsh### [at] monotix co za * Step into the abyss, *
* http://www.rucus.ru.ac.za/~gail/ * and let go. Babylon 5 *
*************************************************************************
* Just think of me as the storm before the calm Magic: The Gathering*
*************************************************************************
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
I would use Colefax's spline macros. It does that and a lot more.
http://www.geocities.com/ccolefax/spline/index.html
--
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}// - Warp -
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
There are times when the simplest choice is not the most exciting. I'm quite
sure that Gail does know Chris' fantastic macros (or at least he could have
easily found them, just had he wanted)... I guess you know what I mean :)
--
Jonathan.
"Warp" <war### [at] tag povray org> ha scritto nel messaggio
news:3bcdc908@news.povray.org...
> I would use Colefax's spline macros. It does that and a lot more.
>
> http://www.geocities.com/ccolefax/spline/index.html
>
> --
> #macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
> rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
> ],13),8)-3,10>#end blob{N(array[6]{11117333955,
> 7382340,3358,3900569407,970,4254934330},0)}// - Warp -
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
In 3.5, you would define a spline as follows:
#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>
}
And implement it using MySpline(val)
Does val not indicate the position along the spline, i.e, 0.1 would be 10%
along the length of the spline etc.?
-tgq
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Trevor Quayle schrieb in Nachricht <3bcddffa$1@news.povray.org>...
>Does val not indicate the position along the spline, i.e, 0.1 would be 10%
>along the length of the spline etc.?
No.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
What does it mean then? Ic ouldn't find it in the docs.
-tgq
"Marc-Hendrik Bremer" <Mar### [at] t-online de> wrote in message
news:3bcde10d@news.povray.org...
> Trevor Quayle schrieb in Nachricht <3bcddffa$1@news.povray.org>...
>
> >Does val not indicate the position along the spline, i.e, 0.1 would be
10%
> >along the length of the spline etc.?
>
>
> No.
>
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Trevor Quayle" <Tin### [at] hotmail com> wrote in message
news:3bcddffa$1@news.povray.org...
> In 3.5, you would define a spline as follows:
>
> #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>
> }
>
> And implement it using MySpline(val)
>
> Does val not indicate the position along the spline, i.e, 0.1 would be 10%
> along the length of the spline etc.?
>
No. MySpline(0.1) calculates the value of the spline where the spline
parameter=0.1
In your example the distances between each 'control point' is the same, but
consider the following
#declare MySpline=
spline {
cubic_spline
-0.25, <0,0,0>
0.00,<1,0,0>
0.25,<2,0,0>
0.50,<4,0,0>
0.75,<8,0,0>
1.00,<16,0,0>
1.25,<32,0,0>
}
In the above case MySpline(0.1) will give me a value of <1.249,0.000,0.000>
which
is definatly not 10% of the way along the spline
Gail
--
*************************************************************************
* gsh### [at] monotix co za * Step into the abyss, *
* http://www.rucus.ru.ac.za/~gail/ * and let go. Babylon 5 *
*************************************************************************
* Just think of me as the storm before the calm Magic: The Gathering*
*************************************************************************
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Warp" <war### [at] tag povray org> wrote in message
news:3bcdc908@news.povray.org...
> I would use Colefax's spline macros. It does that and a lot more.
>
> http://www.geocities.com/ccolefax/spline/index.html
>
I'll have a look at those. Thanks Warp
Gail
--
*************************************************************************
* gsh### [at] monotix co za * Step into the abyss, *
* http://www.rucus.ru.ac.za/~gail/ * and let go. Babylon 5 *
*************************************************************************
* Just think of me as the storm before the calm Magic: The Gathering*
*************************************************************************
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Wasn't it Gail Shaw who wrote:
>I'm trying to write a macro to create a chain that follows a spline and I've
>run
>into a problem. As far as I can tell there is no way to get the value of a
>spline
>at equal distances along it.
>
>Does anyone know of a way to place objects at equal distances along
>a spline, short of trial and error?
Well, trial and error isn't too bad for this sort of task. Make two
passes down the spline in tiny steps, accumulating the vlength() between
each pair of points. On the first pass simply collect the grand total.
On the second pass, place an object whenever the length since the last
object reaches 1/N of that total length.
My making the steps sufficiently small you should be able to get pretty
good accuracy in reasonable time. I'd guess that a positioning accuracy
of half a pixel would be sufficient for most purposes.
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |