From 544a4f972bb37e2030ad27f04cf7377d2466a85f Mon Sep 17 00:00:00 2001
From: ALGUL Sefer <sefer.algul4@etu.univ-lorraine.fr>
Date: Mon, 10 Feb 2025 16:39:29 +0000
Subject: [PATCH] Add new file

---
 ALGUL/index.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)
 create mode 100644 ALGUL/index.js

diff --git a/ALGUL/index.js b/ALGUL/index.js
new file mode 100644
index 0000000..be0a97a
--- /dev/null
+++ b/ALGUL/index.js
@@ -0,0 +1,103 @@
+    import * as THREE from 'https://cdn.jsdelivr.net/npm/three@0.150.1/build/three.module.js';
+    import { GLTFLoader } from 'https://cdn.jsdelivr.net/npm/three@0.150.1/examples/jsm/loaders/GLTFLoader.js';
+    import { OrbitControls } from 'https://cdn.jsdelivr.net/npm/three@0.150.1/examples/jsm/controls/OrbitControls.js';
+
+    const scene = new THREE.Scene();
+    const camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000);
+    const renderer = new THREE.WebGLRenderer({ antialias: true });
+
+    renderer.setSize(window.innerWidth, window.innerHeight);
+    document.body.appendChild(renderer.domElement);
+
+    const controls = new OrbitControls(camera, renderer.domElement);
+    controls.enableDamping = true;
+    controls.dampingFactor = 0.05;
+    controls.screenSpacePanning = false;
+    controls.maxDistance = 1000;
+    controls.minDistance = 50;
+    controls.target.set(0, 0, 0);
+
+    const light = new THREE.DirectionalLight(0xffffff, 1);
+    light.position.set(10, 10, 10);
+    scene.add(light);
+
+    const ambientLight = new THREE.AmbientLight(0x404040, 1);
+    scene.add(ambientLight);
+
+    camera.position.set(200, 150, 300);
+
+    const loader = new GLTFLoader();
+    loader.load('modeles/old_bridge.glb', function (gltf) {
+        const bridge = gltf.scene;
+        scene.add(bridge);
+
+        bridge.position.set(0, 100, 0);
+        bridge.scale.set(0.5, 0.5, 0.5);
+        bridge.rotation.y = Math.PI / 2;
+
+        controls.target.copy(bridge.position);
+        controls.update();
+
+        renderer.render(scene, camera);
+    }, undefined, function (error) {
+        console.error("Erreur de chargement du pont :", error);
+    });
+
+    loader.load('modeles/bateau.glb', function (gltf) {
+        const boat1 = gltf.scene.clone();
+        const boat2 = gltf.scene.clone();
+
+        boat1.position.set(-300, 1, - 500);
+        boat1.scale.set(0.3, 0.3, 0.3);
+
+        boat2.position.set(-200, 1, -600);
+        boat2.scale.set(0.3, 0.3, 0.3);
+        boat2.rotation.y = Math.PI / 4; 
+
+        scene.add(boat1);
+        scene.add(boat2);
+
+        renderer.render(scene, camera);
+    }, undefined, function (error) {
+        console.error("Erreur de chargement des bateaux :", error);
+    });
+
+    const sunGeometry = new THREE.SphereGeometry(20, 32, 32);
+    const sunMaterial = new THREE.MeshBasicMaterial({ color: 0xffcc00 });
+    const sun = new THREE.Mesh(sunGeometry, sunMaterial);
+    sun.position.set(50, 300, -200); 
+    scene.add(sun);
+
+    const sunLight = new THREE.DirectionalLight(0xffddaa, 2);
+    sun.add(sunLight);
+    scene.add(sunLight);
+
+    const textureLoader = new THREE.TextureLoader();
+    const groundTexture = textureLoader.load('textures/water.jpg');
+    groundTexture.wrapS = groundTexture.wrapT = THREE.RepeatWrapping;
+    groundTexture.repeat.set(10, 10);
+    groundTexture.offset.set(0, 0); 
+
+    const groundMaterial = new THREE.MeshLambertMaterial({ map: groundTexture });
+
+    const solidGround = new THREE.Mesh(
+        new THREE.PlaneGeometry(10000, 10000, 100, 100),
+        groundMaterial
+    );
+    solidGround.rotation.x = -Math.PI / 2;
+    solidGround.position.y = -2; 
+    scene.add(solidGround);
+
+    function animate() {
+        requestAnimationFrame(animate);
+        controls.update();
+        renderer.render(scene, camera);
+    }
+
+    animate();
+
+    window.addEventListener('resize', () => {
+        renderer.setSize(window.innerWidth, window.innerHeight);
+        camera.aspect = window.innerWidth / window.innerHeight;
+        camera.updateProjectionMatrix();
+    });
-- 
GitLab