|
|
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
|
|