import { Euler, MathUtils, Quaternion, Vector3 } from "three"; import { getDistance, setDistance, getCameraPosition, setCameraPostion, rotateCamera, getCanvasSize, getCameraRotation, getCameraQuaternion } from "./graphics.js"; let isMousePressed = false let angle = 0; const updateCameraPosition = (horizontal, vertical) => { let ratio = 4 * Math.PI / getCanvasSize().width; let distance = getDistance(); let alpha = (360 * (horizontal * ratio / (2 * Math.PI))) ; let betta = MathUtils.degToRad(angle); let x = Math.cos(betta) * distance; let z = Math.sin(betta) * distance; setCameraPostion(x, undefined, z); angle += alpha; } addEventListener('mousedown', (event) => { if (event.button == 0) { isMousePressed = true; } }); addEventListener('mouseup', (event) => { if (event.button == 0) { isMousePressed = false; } }); addEventListener('mousemove', (event) => { if (isMousePressed) { let horizontal = event.movementX; let vertical = event.movementY; updateCameraPosition(horizontal, vertical); } }); addEventListener('wheel', (event) => { let d = getDistance(); console.log(d + d / (event.deltaY/60)) setDistance(d + d / (event.deltaY/60)); updateCameraPosition(0, 0); })