Meta Description" name="description" />
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kâinatın Mizânı - 3D Tefekkür</title>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;1,600&family=Montserrat:wght@300;400&display=swap" rel="stylesheet">
<style>
body { margin: 0; overflow: hidden; background: #000; color: white; font-family: 'Montserrat', sans-serif; }
#top-ui { position: absolute; top: 30px; width: 100%; text-align: center; z-index: 10; pointer-events: none; }
.verse { font-family: 'Playfair Display', serif; font-size: 1.5rem; font-style: italic; text-shadow: 0 0 15px rgba(255,255,255,0.5); padding: 0 10px; }
.ref { font-size: 0.7rem; letter-spacing: 3px; color: #d4af37; margin-top: 8px; }
#info-card { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); width: 85%; max-width: 400px; padding: 15px; background: rgba(0,0,0,0.7); border-radius: 10px; border: 1px solid rgba(212,175,55,0.3); backdrop-filter: blur(8px); z-index: 10; }
#tefekkur-notu { font-size: 0.85rem; line-height: 1.6; text-align: center; transition: opacity 1s; }
</style>
</head>
<body>
<div id="top-ui">
<p class="verse">"Güneş ve ay bir hesap iledir."</p>
<p class="ref">RAHMÂN SURESİ, 5</p>
</div>
<div id="info-card"><div id="tefekkur-notu">Kâinatın derinliklerine hoş geldiniz...</div></div>
<script type="importmap">
{ "imports": { "three": "https://unpkg.com/three@0.160.0/build/three.module.js", "three/addons/": "https://unpkg.com/three@0.160.0/examples/jsm/" } }
</script>
<script type="module">
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 0.1, 2000);
camera.position.set(50, 40, 100);
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;
// Güneş ve Yıldızlar
const sunLight = new THREE.PointLight(0xffffff, 3000, 1000);
scene.add(sunLight);
scene.add(new THREE.AmbientLight(0x111111));
const sunGeo = new THREE.SphereGeometry(10, 64, 64);
const sunMat = new THREE.MeshStandardMaterial({ emissive: 0xff4400, emissiveIntensity: 2, color: 0xffaa00 });
const sun = new THREE.Mesh(sunGeo, sunMat);
scene.add(sun);
const starGeo = new THREE.BufferGeometry();
const starPos = [];
for(let i=0; i<8000; i++) starPos.push((Math.random()-0.5)*1500, (Math.random()-0.5)*1500, (Math.random()-0.5)*1500);
starGeo.setAttribute('position', new THREE.Float32BufferAttribute(starPos, 3));
scene.add(new THREE.Points(starGeo, new THREE.PointsMaterial({color: 0xffffff, size: 0.5})));
// Gezegenler
const planets = [];
const createP = (r, c, d, s) => {
const g = new THREE.Group();
const m = new THREE.Mesh(new THREE.SphereGeometry(r, 32, 32), new THREE.MeshStandardMaterial({color: c}));
m.position.x = d; g.add(m);
const o = new THREE.Mesh(new THREE.RingGeometry(d-0.1, d+0.1, 64), new THREE.MeshBasicMaterial({color: 0xffffff, opacity: 0.1, transparent: true, side: THREE.DoubleSide}));
o.rotation.x = Math.PI/2; scene.add(o);
scene.add(g); return {g, s};
}
planets.push(createP(0.8, 0xaaaaaa, 20, 0.015), createP(1.4, 0xe3bb76, 30, 0.01), createP(1.5, 0x2233ff, 42, 0.007), createP(1.2, 0xff4422, 55, 0.005));
// Tefekkür Notları
const notes = [
"Dünya, Güneş etrafında saatte 107.000 km hızla, hiç sarsılmadan döner.",
"Ay, Dünya'ya biraz daha yakın olsaydı dev dalgalar karaları yutardı.",
"Güneş'in her saniye harcadığı yakıt, yeryüzündeki tüm hayatın rızkıdır.",
"Kâinattaki hiçbir gezegen, kendine tayin edilen yörüngeden milim şaşmaz."
];
let ni = 0;
setInterval(() => {
const el = document.getElementById('tefekkur-notu');
el.style.opacity = 0;
setTimeout(() => { el.innerText = notes[ni]; el.style.opacity = 1; ni = (ni+1)%notes.length; }, 1000);
}, 6000);
function animate() {
requestAnimationFrame(animate);
sun.rotation.y += 0.002;
planets.forEach(p => p.g.rotation.y += p.s);
controls.update();
renderer.render(scene, camera);
}
animate();
window.addEventListener('resize', () => {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
});
</script>
</body>
</html>
8
4
407KB
1427KB
423.0ms
152.0ms
424.0ms