<div dir="ltr"><div><div>These functions only give a point vector.<br></div><div>The real work is to stitch a solid from this. (And if you can stitch the solid, then you probably can write your own <br></div><div>Bezier function, too.)<br></div>Is there a a general way to generate a Bezier-solid ?<br></div><div>Maybe a pie-cylinder with the outside curve beeing a Bezier curve. <br></div>If yes, I would support it, as designs nowadays go more and more to organic forms.<br></div><div class="gmail_extra"><br><div class="gmail_quote">2015-04-01 12:49 GMT+02:00 David Eccles (gringer) <span dir="ltr"><<a href="mailto:bioinformatics@gringene.org" target="_blank">bioinformatics@gringene.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I found a bezier curve library that looks somewhat reasonable, in that it<br>
doesn't have any hard-coded values or iteration limitations:<br>
<br>
<a href="http://www.thingiverse.com/download:98926" target="_blank">http://www.thingiverse.com/download:98926</a><br>
<br>
Compare with this library, which suffers from "I need to write a different<br>
function for different arguments" syndrome:<br>
<br>
<a href="https://github.com/chadkirby/BezierScad/blob/master/BezierScad.scad" target="_blank">https://github.com/chadkirby/BezierScad/blob/master/BezierScad.scad</a><br>
<br>
Is there any chance of adding at least the bezier functions to OpenSCAD:<br>
<br>
/*<br>
        Bernstein Basis Functions<br>
<br>
        For Bezier curves, these functions give the weights per control point.<br>
<br>
*/<br>
function BEZ03(u) = pow((1-u), 3);<br>
function BEZ13(u) = 3*u*(pow((1-u),2));<br>
function BEZ23(u) = 3*(pow(u,2))*(1-u);<br>
function BEZ33(u) = pow(u,3);<br>
<br>
// Calculate a singe point along a cubic bezier curve<br>
// Given a set of 4 control points, and a parameter 0 <= 'u' <= 1<br>
// These functions will return the exact point on the curve<br>
function PointOnBezCubic2D(p0, p1, p2, p3, u) = [<br>
        BEZ03(u)*p0[0]+BEZ13(u)*p1[0]+BEZ23(u)*p2[0]+BEZ33(u)*p3[0],<br>
        BEZ03(u)*p0[1]+BEZ13(u)*p1[1]+BEZ23(u)*p2[1]+BEZ33(u)*p3[1]];<br>
<br>
function PointOnBezCubic3D(p0, p1, p2, p3, u) = [<br>
        BEZ03(u)*p0[0]+BEZ13(u)*p1[0]+BEZ23(u)*p2[0]+BEZ33(u)*p3[0],<br>
        BEZ03(u)*p0[1]+BEZ13(u)*p1[1]+BEZ23(u)*p2[1]+BEZ33(u)*p3[1],<br>
        BEZ03(u)*p0[2]+BEZ13(u)*p1[2]+BEZ23(u)*p2[2]+BEZ33(u)*p3[2]];<br>
<br>
The modules need a bit of work, because they're generating duplicate<br>
points at the focal location, instead of combining the triangles into a<br>
single polygon.<br>
<br>
<br>
_______________________________________________<br>
OpenSCAD mailing list<br>
<a href="mailto:Discuss@lists.openscad.org">Discuss@lists.openscad.org</a><br>
<a href="http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org" target="_blank">http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><a href="mailto:karsten@rohrbach.de" target="_blank">stempeldergeschichte@googlemail.com</a><br>
<br>
P.S. Falls meine E-Mail kürzer ausfällt als Dir angenehm ist:<br>
Ich probiere gerade aus kurze Antworten statt gar keine Antworten zu schreiben.<br>
Wenn Du gerne mehr lesen möchtest, dann lass es mich bitte wissen.<br>
<br>
P.S. In case my e-mail is shorter than you enjoy:<br>
I am currently trying short replies instead of no replies at all.<br>
Please let me know, if you like to read more.<br><br>Enjoy!<br></div>
</div>