// Dimensions de la tasse
cup_height = 100;          // Hauteur de la tasse (en mm)
cup_radius = 50;           // Rayon externe de la tasse (en mm)
wall_thickness = 5;        // Épaisseur des parois (en mm)
handle_radius = 35;        // Rayon de l'anse (en mm)
handle_thickness = 10;     // Épaisseur de l'anse (en mm)

// Création de la tasse
module cup() {
    // Corps de la tasse
    difference() {
        cylinder(h = cup_height, r = cup_radius, center = false); // Cylindre externe
        translate([0, 0, wall_thickness]) {
            cylinder(h = cup_height - wall_thickness, r = cup_radius - wall_thickness, center = false); // Creux
        }
    }
    // Ajout de l'anse
    translate([cup_radius + handle_radius / 2, 0, cup_height / 2]) {
        handle();
    }
}

// Module pour l'anse
module handle() {
    difference() {
        // Partie externe de l'anse
        rotate([90, 0, 0]) {
            torus(r1 = handle_radius, r2 = handle_thickness);
        }
        // Partie interne de l'anse
        rotate([90, 0, 0]) {
            torus(r1 = handle_radius - handle_thickness, r2 = handle_thickness);
        }
    }
}

// Fonction pour créer un tore
module torus(r1, r2) {
    rotate_extrude() {
        translate([r1, 0, 0]) {
            circle(r = r2);
        }
    }
}

// Afficher la tasse
cup();