Skip to content

Instantly share code, notes, and snippets.

@K-Francis-H
Created April 21, 2024 02:19
Show Gist options
  • Select an option

  • Save K-Francis-H/e25244b019070a59f6bddf806328d46e to your computer and use it in GitHub Desktop.

Select an option

Save K-Francis-H/e25244b019070a59f6bddf806328d46e to your computer and use it in GitHub Desktop.
//OpenSCAD module to create an ogive of given length for a given circle diameter (gauge)
GAUGE13=2.3;//mm
module ogive(gauge=GAUGE13, length=10){
//gauge -> the DIAMATER of spoke
//length the fin or ogive length FROM THE CENTER of the spoke
gr = gauge/2; //gauge radius
chord = length * 2; //length is 1/2 of a chord forming a right triangle along with large_radius as hypotenuse and (large_radius - gauge radius) as opposite
large_radius = (chord)^2 / (8 * gr) + (gr / 2);
large_d = large_radius * 2;
difference(){
union(){
difference(){
translate([0,large_radius-gauge/2,0])
circle(d=large_d,$fn=360);
mask(large_d, gauge);
}
mirror([0,1,0])
difference(){
translate([0,large_radius-gauge/2,0])
circle(d=large_d,$fn=360);
mask(large_d, gauge);
}
}
circle(d=gauge,$fn=360);
}
module mask(d=large_d,gauge=gauge){
b=10*d; //square side large enough separate the ogive profile
union(){//squares to get half profile
translate([0,-5*gauge,0])
square([b,b]);
translate([-d,0,0])
square([b,b]);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment