module Booster_Fin () {
Main_Span = 34.688; // Bennett
Root_Chord = 37.125; //
Tip_Chord = 10.50; //
Edge_Diameter = 0.25; // Est.
Root_Thickness = 2.297; //
Tip_Thickness = 0.706; //
Root_Drop_Extension = 0.094; // 3/32 Bennett
difference() {
hull () {
// forward root edge
translate ([Edge_Diameter/2 - 0.2, 0, -0.5]) sphere (d = Edge_Diameter, $fn = 20);
// aft root edge
translate ([Root_Chord - Edge_Diameter/2, 0, 0]) sphere (d = Edge_Diameter, $fn = 20);
// forward tip edge
translate ([Root_Chord/2 + Tip_Chord/2 - Edge_Diameter/2, 0, Main_Span]) sphere (d = Edge_Diameter, $fn = 20);
// aft tip edge
translate ([Root_Chord/2 - Tip_Chord/2 + Edge_Diameter/2, 0, Main_Span]) sphere (d = Edge_Diameter, $fn = 20);
// root center
translate ([Root_Chord/2, Root_Thickness/2 - Edge_Diameter/2, 0]) sphere (d = Edge_Diameter, $fn = 20);
translate ([Root_Chord/2, -Root_Thickness/2 + Edge_Diameter/2, 0]) sphere (d = Edge_Diameter, $fn = 20);
// tip center
translate ([Root_Chord/2, Tip_Thickness/2 - Edge_Diameter/2, Main_Span])
sphere (d = Edge_Diameter, $fn = 20);
translate ([Root_Chord/2, -Tip_Thickness/2 + Edge_Diameter/2, Main_Span])
sphere (d = Edge_Diameter, $fn = 20);
} // end hull
// trim the fin tip with a translated by the fin span.
translate ([0, 0, Main_Span + 10/2]) cube (size = [Root_Chord * 4, 10, 10], center = true);
// trim the extended fin root
translate ([0, 0, -Root_Drop_Extension - 10/2]) cube (size = [Root_Chord * 4, 10, 10], center = true);
// trim the shroud section of the fin root
translate ([Root_Chord/2 + 7.875, 0, -10/2]) cube (size = [Root_Chord, 10, 10], center = true);
// slanted trim between the two sections
hull () {
translate ([Root_Chord/2 + 7.875, 0, -10/2]) cube (size = [Root_Chord, 10, 10], center = true);
translate ([6, 0, -Root_Drop_Extension]) cube (size = [0.01, 10, 0.01], center = true);
}
} // end difference
// fin mount rod
translate ([Root_Chord/2, 0, 0]) cylinder (h = 1, d = 2, center = true, $fn = 60);
rivet_spaceLE = 1.017; // leading edge rivet spacing
translate ([0.45, -0.18, 0.3]) for ( rivet_number = [ 0: 36]) { // for 37 rivets
rotate (a = [0, -69, 0]) translate ([rivet_number * rivet_spaceLE, 0, 0])
rotate (a = [90, 0, 0]) rivet (0.35, 0.3);
} // end for
rivet_spaceTE = 1.016; // trailing edge rivet spacing
translate ([0.3, -0.18, 0.3]) for ( rivet_number = [ 0: 36]) { // for 37 rivets
translate ([Root_Chord - 0.7, 0, 0]) rotate (a = [0, -111, 0])
translate ([rivet_number * rivet_spaceTE, 0, 0]) rotate (a = [90, 0, 0]) rivet (0.35, 0.3);
} // end for
mirror ([0, 1, 0]) { // mirror places the rivets on the opposite side
translate ([0.45, -0.18, 0.3]) for ( rivet_number = [ 0: 36]) { // for 37 rivets
rotate (a = [0, -69, 0]) translate ([rivet_number * rivet_spaceLE, 0, 0])
rotate (a = [90, 0, 0]) rivet (0.35, 0.3);
} // end for
translate ([0.3, -0.18, 0.3]) for ( rivet_number = [ 0: 36]) { // for 37 rivets
translate ([Root_Chord - 0.7, 0, 0]) rotate (a = [0, -111, 0])
translate ([rivet_number * rivet_spaceTE, 0, 0]) rotate (a = [90, 0, 0]) rivet (0.35, 0.3);
} // end for
} // end mirror
} // end module Booster_Fin
Booster_Fin ();