// Egg shape
module egg() {
    color("red")
    scale([1, 1, 1.4])  // Scale the sphere to elongate along the Z-axis
    sphere(r=17, $fn=75);        // Sphere with radius 15
}

// Eye shape
module eye1() {
    color("white")         
    scale([2, 0.8, 1.3])      // Scale the sphere to elongate along the Z-axis
    sphere(r=3, , $fn=50);            // Sphere with radius 15
}

module minieye1() {
    color("blue")         
    scale([1.4, 1, 1.3])      // Scale the sphere to elongate along the Z-axis
    sphere(r=1.5, , $fn=50);            // Sphere with radius 15
}

module eye2() {
    color("white")         
    scale([2, 0.8, 1.3])      // Scale the sphere to elongate along the Z-axis
    sphere(r=3, , $fn=50);
}

module minieye2() {
    color("blue")         
    scale([1.4, 1, 1.3])      // Scale the sphere to elongate along the Z-axis
    sphere(r=1.5, , $fn=50);            // Sphere with radius 15
}


translate([6.5,14,10]) rotate([0,18,0]) eye1();
translate([-6.5,14,10]) rotate([0,-18,0]) eye2();
 
translate([7.5,16,10]) minieye1();
translate([-7.5,16,10]) minieye2();

module eyebrow1() {
    color("red")
    cylinder(h = 11, r1 = 1.5, r2 = 1.5, center = false, $fn=50);
    sphere(r=1.5, $fn=25);
}

module eyebrow2() {
    color("red")
    cylinder(h = 11, r1 = 1.5, r2 = 1.5, center = false, $fn=50);
    sphere(r=1.5, $fn=25);
}

module hat() {
    color("gold")
    cube(5);
}

module nose() {
    color("red")
    cylinder(h = 10, r1 = 3, r2 = 2, center = false, $fn=50);
    scale([1,1,0.5])
    sphere(r=3, $fn=50);
}

module mouthshape() {
    color("gray")
    translate([0,15,-7])
    scale([3,1.5,1.2])
    sphere(r=5, $fn=50);
}    

module egghead() {
    difference() {
        egg();
        mouthshape();
    }
}

translate([-2.5,-2.5,21]) hat();
translate([0,19,2]) rotate([35,0,0]) nose();

translate([13,12,10.5]) rotate([0,-60,0]) eyebrow1();
translate([-13,12,10.5]) rotate([0,60,0]) eyebrow2();

module ringouter() {
    color("yellow")
    cylinder(r=3, h=1.5, $fn=50);  // Outer ring with small height
}

module ringinner() {
    color("yellow")
    cylinder(r=2.5, h=10.7, $fn=50);  // Inner ring with small height (slightly taller to ensure proper subtraction)
}

module ring() {
    difference() {
        ringouter();  // Outer cylinder
        ringinner();  // Subtract inner cylinder
    }
}

// Render the ring as a 3D object
translate([0, 0, 28]) rotate([90, 0, 0]) {  // Position the ring
    ring();
}

egghead();