use <threads.scad>

$fn=180;
Delta = 0.01;
Inch = 25.4;
Gewinde=12;
Bohrung=10;
Kugel=25;

module austritt() {
	cylinder(d1=2, d2=2.5, h=15);
}

intersection() {
	difference() {
		union() {
			// Duschkopf-Gewinde an Schlauch
			english_thread (diameter=20/Inch, threads_per_inch=14, length=Gewinde/Inch, leadin=2, test=false);
			// Außenform Oval
			translate([0,0,Gewinde+25/2-2]) scale([1,1,1.5]) difference() {
				sphere(d=Kugel);
				// Ein Strahl zentral nach vorne
				austritt();
				// 5x Strahl nach schräg vorne
				for(i=[0:360/5:360]) rotate([0,0,i]) rotate([45,0,0]) austritt();
				// 6x breiter Strahl nach hinten
				for(i=[0:360/8:360]) hull() {
					rotate([0,0,i]) rotate([110,0,0]) austritt();
					rotate([0,0,i+6]) rotate([110,0,0]) austritt();
				}
			}
		}
		// Innenbohrung
		hull() {
			translate([0,0,-Delta]) cylinder(d=Bohrung, h=Gewinde);
			translate([0,0,Gewinde+Kugel*2/3]) sphere(d=Bohrung);
		}
	}
	translate([0,0,0]) cube(100, center=true);
}
