From 0227c412a0006900a46ad5cb236d80f0264a3949 Mon Sep 17 00:00:00 2001 From: MOHAMED MEHIAOUI <mohamed.mehiaoui8@etu.univ-lorraine.fr> Date: Wed, 12 Mar 2025 12:55:11 +0100 Subject: [PATCH] designer des pommes --- MEHIAOUI/index.html | 2 +- MEHIAOUI/projet.js | 45 ++++++++++++++++++++++++++++++++++++++------- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/MEHIAOUI/index.html b/MEHIAOUI/index.html index ed6977d..9d9b144 100644 --- a/MEHIAOUI/index.html +++ b/MEHIAOUI/index.html @@ -24,7 +24,7 @@ <!-- JQuery pour afficher les erreurs --> <script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <!-- Un titre centre --> - <div id="webGL" class="centre"></div> + <div id="webGL" class="centre">Juste un bol, des fruits, et des fleurs</div> <!-- Mon script avec un chemin relatif --> <script type="module" src="projet.js"></script> </body> diff --git a/MEHIAOUI/projet.js b/MEHIAOUI/projet.js index 2d3d07f..be2239c 100644 --- a/MEHIAOUI/projet.js +++ b/MEHIAOUI/projet.js @@ -80,16 +80,47 @@ function fillScene() { bol.position.set(-5, 5, 5); bol.rotation.x = Math.PI; - //fonction pour creer une pomme function createApple(x, y, z, color) { - var apple = new THREE.Mesh(new THREE.SphereGeometry(1.5, 22, 22), new THREE.MeshPhongMaterial({color: color})); - apple.position.set(x, y, z); - // tige de la pomme - var tige = new THREE.Mesh(new THREE.CylinderGeometry(0.1, 0.1, 1, 32), new THREE.MeshPhongMaterial({color: 0x8B4513})); - tige.position.set(x, y+1, z); - window.scene.add(tige); + var applePoints = []; + applePoints.push(new THREE.Vector2(0, 0)); // Base + applePoints.push(new THREE.Vector2(1.2, 0.4)); + applePoints.push(new THREE.Vector2(1.8, 1.0)); + applePoints.push(new THREE.Vector2(2.1, 1.8)); // Plus large vers le centre + applePoints.push(new THREE.Vector2(2.0, 2.6)); + applePoints.push(new THREE.Vector2(1.7, 3.1)); + applePoints.push(new THREE.Vector2(1.4, 3.4)); // Arrondi progressif + applePoints.push(new THREE.Vector2(1.0, 3.6)); + applePoints.push(new THREE.Vector2(0.7, 3.7)); + applePoints.push(new THREE.Vector2(0.5, 3.65)); // Début de l'indentation + applePoints.push(new THREE.Vector2(0.3, 3.5)); // Légère dépression + applePoints.push(new THREE.Vector2(0.1, 3.3)); // Dépression plus marquée + applePoints.push(new THREE.Vector2(0, 3.2)); // Haut légèrement incurvé + + var appleGeometry = new THREE.LatheGeometry(applePoints, 64); // Plus de segments pour plus de douceur + var appleMaterial = new THREE.MeshPhongMaterial({ color: color, shininess: 50 }); + var apple = new THREE.Mesh(appleGeometry, appleMaterial); + apple.position.set(x, y, z); + + // Créer la tige avec une légère courbure + var stemGeometry = new THREE.CylinderGeometry(0.1, 0.15, 0.5, 16); + var stemMaterial = new THREE.MeshPhongMaterial({ color: 0x8B4513 }); + var stem = new THREE.Mesh(stemGeometry, stemMaterial); + stem.position.set(x, y + 3.4, z); + stem.rotation.z = Math.PI / 10; // Inclinaison réaliste + + // Ajouter une petite feuille pour plus de réalisme + var leafGeometry = new THREE.SphereGeometry(0.2, 16, 8); + var leafMaterial = new THREE.MeshPhongMaterial({ color: 0x228B22 }); + var leaf = new THREE.Mesh(leafGeometry, leafMaterial); + leaf.position.set(x + 0.2, y + 3.6, z); + leaf.scale.set(1, 0.5, 1); // Rendre la feuille plus plate + window.scene.add(apple); + window.scene.add(stem); + window.scene.add(leaf); } + + //Remplir le bol de pommes à des positions différentes createApple(-5, 2, 5, 0xFF0000); createApple(-4, 4, 7, 0x00FF00); -- GitLab