Spaces:
Sleeping
Sleeping
| // =============================== | |
| // THREE.JS 3D BACKGROUND | |
| // =============================== | |
| const canvas = document.querySelector("#bg"); | |
| const scene = new THREE.Scene(); | |
| const camera = new THREE.PerspectiveCamera( | |
| 75, | |
| window.innerWidth / window.innerHeight, | |
| 0.1, | |
| 1000 | |
| ); | |
| const renderer = new THREE.WebGLRenderer({ | |
| canvas: canvas, | |
| }); | |
| renderer.setSize(window.innerWidth, window.innerHeight); | |
| camera.position.z = 30; | |
| // Create particles | |
| const particlesGeometry = new THREE.BufferGeometry(); | |
| const particlesCount = 5000; | |
| const posArray = new Float32Array(particlesCount * 3); | |
| for (let i = 0; i < particlesCount * 3; i++) { | |
| posArray[i] = (Math.random() - 0.5) * 200; | |
| } | |
| particlesGeometry.setAttribute( | |
| "position", | |
| new THREE.BufferAttribute(posArray, 3) | |
| ); | |
| const particlesMaterial = new THREE.PointsMaterial({ | |
| size: 0.5, | |
| color: 0x4e73df | |
| }); | |
| const particlesMesh = new THREE.Points( | |
| particlesGeometry, | |
| particlesMaterial | |
| ); | |
| scene.add(particlesMesh); | |
| // Animation loop | |
| function animate() { | |
| requestAnimationFrame(animate); | |
| particlesMesh.rotation.y += 0.0007; | |
| particlesMesh.rotation.x += 0.0003; | |
| renderer.render(scene, camera); | |
| } | |
| animate(); | |
| // Resize | |
| window.addEventListener("resize", () => { | |
| camera.aspect = window.innerWidth / window.innerHeight; | |
| camera.updateProjectionMatrix(); | |
| renderer.setSize(window.innerWidth, window.innerHeight); | |
| }); | |
| // =============================== | |
| // QR PREVIEW CODE | |
| // =============================== | |
| const dataInput = document.querySelector("input[name='data']"); | |
| const fillColorInput = document.querySelector("input[name='fill_color']"); | |
| const backColorInput = document.querySelector("input[name='back_color']"); | |
| const sizeSelect = document.querySelector("select[name='size']"); | |
| const logoInput = document.querySelector("input[name='logo']"); | |
| const form = document.querySelector("form"); | |
| // Preview container | |
| const previewContainer = document.createElement("div"); | |
| previewContainer.style.marginTop = "20px"; | |
| previewContainer.style.textAlign = "center"; | |
| const previewImg = document.createElement("img"); | |
| previewImg.style.maxWidth = "200px"; | |
| previewContainer.appendChild(previewImg); | |
| form.appendChild(previewContainer); | |
| // Generate preview | |
| function generatePreview() { | |
| const data = dataInput.value.trim(); | |
| const fillColor = fillColorInput.value; | |
| const backColor = backColorInput.value; | |
| const size = sizeSelect.value; | |
| if (data === "") { | |
| previewImg.src = ""; | |
| return; | |
| } | |
| previewImg.src = | |
| `https://api.qrserver.com/v1/create-qr-code/?size=${size * 25}x${size * 25}&data=${encodeURIComponent(data)}&color=${fillColor.replace('#', '')}&bgcolor=${backColor.replace('#', '')}`; | |
| } | |
| // Events | |
| dataInput.addEventListener("input", generatePreview); | |
| fillColorInput.addEventListener("input", generatePreview); | |
| backColorInput.addEventListener("input", generatePreview); | |
| sizeSelect.addEventListener("change", generatePreview); | |
| // Form validation | |
| form.addEventListener("submit", function (e) { | |
| if (dataInput.value.trim() === "") { | |
| e.preventDefault(); | |
| alert("Please enter Asset ID!"); | |
| } | |
| }); |