POV-Ray : Newsgroups : povray.general : How does bezier_spline work in prism? : Re: How does bezier_spline work in prism? Server Time
27 Apr 2024 00:20:33 EDT (-0400)
  Re: How does bezier_spline work in prism?  
From: William F Pokorny
Date: 8 Sep 2019 21:56:07
Message: <5d75b137$1@news.povray.org>
On 9/8/19 2:32 PM, Kima wrote:
> I tried to make a simple circle by bezier_spline,
> 
>      prism {
>        bezier_spline
>       0,-.3,32,
> <0.154,0.605>,<0.128,0.605>,<0.128,0.605>,<0.1105,0.6225>
> <0.1105,0.6225>,<0.093,0.64>,<0.093,0.64>,<0.093,0.666>
> <0.093,0.666>,<0.093,0.691>,<0.093,0.691>,<0.1105,0.709>
> <0.1105,0.709>,<0.128,0.727>,<0.128,0.727>,<0.154,0.727>
> <0.154,0.727>,<0.18,0.727>,<0.18,0.727>,<0.1975,0.709>
> <0.1975,0.709>,<0.215,0.691>,<0.215,0.691>,<0.215,0.666>
> <0.215,0.666>,<0.215,0.64>,<0.215,0.64>,<0.1975,0.6225>
> <0.1975,0.6225>,<0.18,0.605>,<0.18,0.605>,<0.154,0.605>
> 
>        pigment { color rgb<1,0,0>}
> 
> }
> 
> but instead of a circle, it gave me an octagon as it seems the control points
> are connected instead of start and end points.
> 
> What is wrong with my setting <start,control1,control2,end>?
> 
> Note that I want to understand bezier_spline rather than finding an alternative
> for creating a specific shape.
> 
Your control points in each segment are identical.

The usual way to do circles with Bezier curves is with 4 segments using 
the method from: Michael Goldapp, "Approximation of circular arcs by 
cubic polynomials" Computer Aided Geometric Design (#8 1991 pp.227-238).

I'm lazy and keep a point list created by this method for a circle at a 
radius of 1.0 at the origin laying around - which I can scale, move etc. 
So a circle within a circle to create a prism ring of sorts becomes:

#declare Cheese = srgb <1,0.65098,0>;
#declare Prism00 = prism {
     bezier_spline
     linear_sweep
     -0.2, 0.2, 32,
     <1,0>,<1,0.552285>,<0.552285,1>,<0,1>
     <0,1>,<-0.552285,1>,<-1,0.552285>,<-1,0>
     <-1,0>,<-1,-0.552285>,<-0.552285,-1>,<0,-1>
     <0,-1>,<0.552285,-1>,<1,-0.552285>,<1,0>
     <0.5,0>,<0.5,0.276143>,<0.276143,0.5>,<0,0.5>
     <0,0.5>,<-0.276143,0.5>,<-0.5,0.276143>,<-0.5,0>
     <-0.5,0>,<-0.5,-0.276143>,<-0.276143,-0.5>,<0,-0.5>
     <0,-0.5>,<0.276143,-0.5>,<0.5,-0.276143>,<0.5,0>
     pigment { color Cheese }
}

Bill P.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.