base_radius = 10;
base_height = 3;
stem_height = 25;
stem_radius = 5;
top_radius = 10;
top_height = 6;
crown_height = 3;
crown_radius = 4;


module base() {
    cylinder(h = base_height, r = base_radius);
}


module stem() {
    translate([0, 0, base_height])
    cylinder(h = stem_height, r = stem_radius);
}


module top() {
    translate([0, 0, base_height + stem_height])
    cylinder(h = top_height, r1 = stem_radius, r2 = top_radius);
}


module crown() {
    translate([0, 0, base_height + stem_height + top_height])
    cylinder(h = crown_height, r1 = top_radius, r2 = crown_radius);
}


difference() {
    union() {
        base();
        stem();
        top();
        crown();
    }
}