# Saxophone flared bell tube, curved and graduated, how to model it?

20 messages
Open this post in threaded view
|

## Saxophone flared bell tube, curved and graduated, how to model it?

 Relative beginner question:  Saxophone flared bell tube, curved and graduated, how to model it? I'm trying to model a saxophone bell, which has a bore (hole) that flares from beginning to end over a range of angles.  For the time being, I'm assuming that 1.  The bore is circular, so some kind of extruded circle would be appropriate 2.  But the bore flares (increases in diameter) exponentially from beginning to end (it should be possible to specify the diameter of each "section" as a function of the angle) 3.  The center of the bore rotates around a radius 4.  Also, I'm assuming that one would first model the bore as a kind of solid curved graduated cylinder, and then model a larger-diameter "shell" as another solid curved graduated cylinder (on the same radius), and then just subtract/difference the bore from the shell to get a curved graduated tube (like a saxophone bell).  The walls of the tube should be the same thickness throughout the result. I'm a beginner, but I have some acquaintance with linear_extrude and rotate_extrude.  rotate_extrude would seem to be perfect IF it offered (like linear_extrude) the possibility of specifying the scale as an interpolated function.  I also just looked at ring_extrude, which seems promising, except that the shape to be extruded must be specified as a vector of points---it would be nice if one could simply extrude a simple circle. Are there any available functions that might help me model a saxophone bell?  Is there any better way to go about it? Thanks,  Ken ******************************* Kenneth R. Beesley, D.Phil. PO Box 540475 North Salt Lake UT 84054 USA _______________________________________________ OpenSCAD mailing list [hidden email] http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

 In reply to this post by Kenneth Beesley The advent calendar ( https://www.openscad.org/advent-calendar-2019/ ) has a candlestick ( https://files.openscad.org/advent-calendar-2019/01.scad ) that shows a technique for rotate_extrude of a shape derived from a function. It would be a little trickier to derive the coordinates for the inside of the shape.  It seems like you could take a curve's coordinates, offset by epsilon in one direction or another, reverse it, combine to form a very skinny curved polygon, then offset to form your final shape. Here's the basic idea.  I haven't tried to figure out the function you would want. ```\$fa = 5; \$fs = 0.1; function f(x) = log(x)*3; minx = 2; maxx = 5; step = 0.1; thickness = 0.5; epsilon=0.001; points = [ for (x = [minx:step:maxx]) [ x, f(x) ], for (x = [maxx:-step:minx]) [ x+epsilon, f(x) ], ]; color("brown") rotate_extrude() offset(thickness/2) polygon(points); ``` _______________________________________________ OpenSCAD mailing list [hidden email] http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

 On 12/3/2019 1:40 PM, Jordan Brown wrote: It would be a little trickier to derive the coordinates for the inside of the shape.  It seems like you could take a curve's coordinates, offset by epsilon in one direction or another, reverse it, combine to form a very skinny curved polygon, then offset to form your final shape. Going back to the discussion of one-dimensional geometry, it would be useful to be able to offset( ) a sequence of line segments, inflating them to 2D. (Perhaps a sequence of connected line segments is 1.5D.) _______________________________________________ OpenSCAD mailing list [hidden email] http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: ***SPAM*** Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: ***SPAM*** Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: ***SPAM*** Re: Saxophone flared bell tube, curved and graduated, how to model it?

Open this post in threaded view
|

## Re: Saxophone flared bell tube, curved and graduated, how to model it?

 In reply to this post by Kenneth Beesley Here's my attempt at creating a split linear/flared tube. It uses a piece-wise function, sax_radius_inner to define the curve at any given point along the tube length. This is paired with an offset function, sax_radius_outer. The wall thickness is maintained [approximately] by offsetting the distance from the wall thickness, and adding an additional constant-radius portion at the end. ```// tube length full_tube_length = 1400; // tenor: 1.4m; alto: 1.2m // end diameter end_diam = 100; // [see https://www.syos.co/en/blog/gear/the-saxophone-mouthpiece-length] start_diam = 17.25; // harder to find this dimension // length of flare flare_length = 50; // extra diameter for flare flare_extra_diam = flare_length; // wall thickness wall_thickness = 5; // determine the inner radius at distance d from the start [plain tube] function base_radius_inner(d) = ((end_diam - start_diam) * (d / full_tube_length) + start_diam)/2; // determine the outer radius at distance d from the start [plain tube] function base_radius_outer(d, t) = base_radius_inner + t; // inner radius [quarter-circle-flared tube] function sax_radius_inner(d) = (d < (full_tube_length - flare_length)) ? base_radius_inner(d) : let(dc = d - (full_tube_length - flare_length), fl2 = (flare_length) * (flare_length)) base_radius_inner(d) + ((flare_length) - sqrt(fl2 - (dc*dc))); // outer radius [quarter-circle-flared tube] function sax_radius_outer(d, t) = (d < (full_tube_length - wall_thickness)) ? sax_radius_inner(d+wall_thickness) + t : sax_radius_inner(full_tube_length); // make function shortcuts function sri(d) = sax_radius_inner(d); function sro(d) = sax_radius_outer(d, wall_thickness); echo(concat([[1],[2]], [[3]], [[4], [5]])); rotate_extrude(){ polygon(concat( [[sri(0),0]], [for(y=[0:10:full_tube_length-flare_length]) [sro(y), y]], [for(y=[full_tube_length-flare_length:1:full_tube_length]) [sro(y), y]], [for(y=[full_tube_length:-1:full_tube_length-flare_length]) [sri(y), y]], [for(y=[full_tube_length-flare_length:-10:0]) [sri(y), y]])); }; ``` Sent from the OpenSCAD mailing list archive at Nabble.com._______________________________________________ OpenSCAD mailing list [hidden email] http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org