Radiateur.pde 3,62 ko
Newer Older
Thiam Papa's avatar
Thiam Papa a validé
class Radiateur extends QShape {
    private float largeur;
    private float hauteur;
    private float profondeur;
    private PImage texture;

    Radiateur(float x, float y, float z) {
        super(x, y, z);
    }

    void creerRadiateur(float largeur, float hauteur, float profondeur, PImage texture) {
        this.largeur = largeur;
        this.hauteur = hauteur;
        this.profondeur = profondeur;
        this.texture = texture;

        shape = createShape();
        shape.beginShape(QUADS);
        shape.texture(texture);
        shape.noStroke();

        // Face avant
        shape.vertex(-largeur / 2, -hauteur / 2, profondeur / 2, 0, 0);
        shape.vertex(largeur / 2, -hauteur / 2, profondeur / 2, texture.width, 0);
        shape.vertex(largeur / 2, hauteur / 2, profondeur / 2, texture.width, texture.height);
        shape.vertex(-largeur / 2, hauteur / 2, profondeur / 2, 0, texture.height);

        // Face arrière
        shape.vertex(-largeur / 2, -hauteur / 2, -profondeur / 2, 0, 0);
        shape.vertex(largeur / 2, -hauteur / 2, -profondeur / 2, texture.width, 0);
        shape.vertex(largeur / 2, hauteur / 2, -profondeur / 2, texture.width, texture.height);
        shape.vertex(-largeur / 2, hauteur / 2, -profondeur / 2, 0, texture.height);

        // Côtés
        shape.vertex(-largeur / 2, -hauteur / 2, -profondeur / 2, 0, 0);
        shape.vertex(-largeur / 2, -hauteur / 2, profondeur / 2, texture.width, 0);
        shape.vertex(-largeur / 2, hauteur / 2, profondeur / 2, texture.width, texture.height);
        shape.vertex(-largeur / 2, hauteur / 2, -profondeur / 2, 0, texture.height);

        shape.vertex(largeur / 2, -hauteur / 2, -profondeur / 2, 0, 0);
        shape.vertex(largeur / 2, -hauteur / 2, profondeur / 2, texture.width, 0);
        shape.vertex(largeur / 2, hauteur / 2, profondeur / 2, texture.width, texture.height);
        shape.vertex(largeur / 2, hauteur / 2, -profondeur / 2, 0, texture.height);

        // Haut
        shape.vertex(-largeur / 2, hauteur / 2, -profondeur / 2, 0, 0);
        shape.vertex(largeur / 2, hauteur / 2, -profondeur / 2, texture.width, 0);
        shape.vertex(largeur / 2, hauteur / 2, profondeur / 2, texture.width, texture.height);
        shape.vertex(-largeur / 2, hauteur / 2, profondeur / 2, 0, texture.height);

        // Bas
        shape.vertex(-largeur / 2, -hauteur / 2, -profondeur / 2, 0, 0);
        shape.vertex(largeur / 2, -hauteur / 2, -profondeur / 2, texture.width, 0);
        shape.vertex(largeur / 2, -hauteur / 2, profondeur / 2, texture.width, texture.height);
        shape.vertex(-largeur / 2, -hauteur / 2, profondeur / 2, 0, texture.height);

        shape.endShape();

        // Ajouter les poignées

        // Poignée en bas à gauche (en bleu)
        poignee(-largeur / 2, -hauteur / 2, profondeur / 2);

        // Poignée en bas à droite (en vert)
        poignee(largeur / 2, -hauteur / 2, profondeur / 2);
    


    }

    //ajout poignée en haut à droite (en rouge)
    void poignee(float x, float y, float z){
        PShape poignee = createShape();
        poignee.beginShape(QUADS);
        poignee.noStroke();
        poignee.fill(255, 0, 0);
        poignee.vertex(x, y, z, 0, 0);
        poignee.vertex(x, y, z+10, 0, 0);
        poignee.vertex(x, y+10, z+10, 0, 0);
        poignee.vertex(x, y+10, z, 0, 0);
        poignee.endShape();
        shape.addChild(poignee);
    }

    void positionnerRadiateur(float x, float y, float z) {
        shape.resetMatrix(); 
        shape.translate(x, y, z);
        shape.rotateY(HALF_PI); // Pivote de 90° pour correspondre au mur gauche
    }

    void dessine() {
        shape(shape);
    }
}