courses:ast100:7.3
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| courses:ast100:7.3 [2026/03/23 08:33] – [1. Sun and the seasons] asad | courses:ast100:7.3 [2026/03/23 10:32] (current) – [2. Moon and eclipses] asad | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| ===== - Sun and the seasons ===== | ===== - Sun and the seasons ===== | ||
| - | < | + | {{https://upload.wikimedia.org/ |
| - | < | + | |
| - | <meta charset=" | + | |
| - | <meta name=" | + | |
| - | < | + | |
| - | < | + | |
| - | body { margin: 0; overflow: hidden; background-color: | + | |
| - | # | + | |
| - | #ui-panel { | + | |
| - | position: absolute; | + | |
| - | top: 20px; | + | |
| - | left: 20px; | + | |
| - | background: rgba(10, 15, 30, 0.85); | + | |
| - | padding: 20px; | + | |
| - | border-radius: | + | |
| - | border: 1px solid #334; | + | |
| - | pointer-events: | + | |
| - | box-shadow: 0 4px 15px rgba(0, | + | |
| - | } | + | |
| - | h1 { margin: 0 0 10px 0; font-size: 1.2rem; letter-spacing: 1px; color: #e0e0e0; } | + | |
| - | | + | |
| - | .label { color: #88aaff; font-weight: | + | |
| - | .value { color: #ffffff; } | + | |
| - | #controls { position: absolute; bottom: 30px; left: 50%; transform: translateX(-50%); | + | |
| - | button { | + | |
| - | background: #1a2a40; border: 1px solid #4a6a90; color: white; | + | |
| - | padding: 10px 20px; cursor: pointer; border-radius: | + | |
| - | transition: background 0.2s; | + | |
| - | } | + | |
| - | button: | + | |
| - | </ | + | |
| - | </ | + | |
| - | < | + | |
| - | <div id=" | + | As illustrated |
| - | < | + | |
| - | <div class=" | + | |
| - | <div class=" | + | |
| - | <div class=" | + | |
| - | </ | + | |
| - | <div id=" | + | The visual representation clearly distinguishes between astronomical and meteorological seasons. Astronomical seasons are defined precisely by the Earth' |
| - | <button id=" | + | |
| - | </ | + | |
| - | <div id=" | + | To fully understand these astronomical cycles, one must consider planetary kinematics. Earth spins rapidly on its internal axis, maintaining an equatorial rotational speed of approximately 0.46 km/s. Simultaneously, |
| - | <script src=" | + | The ancient Babylonians significantly advanced these early timekeeping methods by blending astronomy with complex mathematics. Observing that the Sun returned to its original stellar position after 365 days, they smartly established a formalized circular calendar model. Because they actively utilized a base sixty mathematical framework, dividing a complete celestial circle into exactly 360 separate degrees felt logical and natural. Consequently, they firmly declared that the Sun traveled exactly one degree each day. This brilliant Babylonian innovation synchronized solar movement with geometry, permanently establishing the mathematical foundation for modern human calendars today. |
| - | < | + | |
| - | // Scene Setup | + | |
| - | const scene = new THREE.Scene(); | + | |
| - | const camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000); | + | |
| - | camera.position.set(0, 40, 60); | + | |
| - | camera.lookAt(0, 0, 0); | + | |
| - | const renderer | + | ===== - Moon, month and eclipses ===== |
| - | renderer.setSize(window.innerWidth, window.innerHeight); | + | {{https://upload.wikimedia.org/ |
| - | document.getElementById(' | + | |
| - | // Lighting | + | The lunar phases illustrated in the diagram are the result of the Moon’s continuous orbital progression around Earth and the corresponding changes in the angle of solar illumination as viewed from our planet’s surface. As the Moon completes its synodic orbit every 29.5 days, the transition between the new moon, quarters, and full moon creates a visible celestial cycle that served as the foundational basis for the concept of a " |
| - | const ambientLight = new THREE.AmbientLight(0x222222); | + | |
| - | scene.add(ambientLight); | + | |
| - | const pointLight = new THREE.PointLight(0xffffff, 2, 300); | + | |
| - | scene.add(pointLight); | + | |
| - | // Sun | + | The geometry of lunar phases depends on the relative positions of the Sun, Earth, and Moon. A new moon occurs when the Moon resides between Earth and the Sun, leaving its illuminated side hidden from our view. Conversely, a full moon happens when Earth is positioned between the Sun and Moon, fully revealing the lunar day side. The first and last quarter phases occur when the Moon reaches a 90-degree angle relative to the Earth-Sun line. As the Moon orbits, these angular changes create the waxing and waning appearances, demonstrating how celestial perspective dictates the entire visible cycle of moonlight. |
| - | const sunGeo = new THREE.SphereGeometry(4, 32, 32); | + | |
| - | const sunMat = new THREE.MeshBasicMaterial({ color: 0xffdd00 }); | + | |
| - | const sun = new THREE.Mesh(sunGeo, sunMat); | + | |
| - | scene.add(sun); | + | |
| - | | + | {{https://upload.wikimedia.org/ |
| - | const orbitRadius = 25; | + | |
| - | const orbitGeo = new THREE.RingGeometry(orbitRadius - 0.1, orbitRadius + 0.1, 64); | + | |
| - | const orbitMat = new THREE.MeshBasicMaterial({ color: 0x334455, side: THREE.DoubleSide | + | |
| - | const orbitMesh = new THREE.Mesh(orbitGeo, | + | |
| - | orbitMesh.rotation.x = Math.PI / 2; | + | |
| - | scene.add(orbitMesh); | + | |
| - | // Earth Pivot (Handles | + | Eclipses occur when the Sun, Earth, and Moon align in a nearly straight line, an alignment known as **syzygy**. A solar eclipse happens during a new moon phase when the Moon passes directly between the Sun and Earth, casting a shadow on the planet' |
| - | const earthPivot = new THREE.Group(); | + | |
| - | scene.add(earthPivot); | + | |
| - | // Earth Group (Handles the absolute axial tilt, completely independent | + | Historically, eclipses have carried profound cultural significance, |
| - | const earthGroup = new THREE.Group(); | + | |
| - | earthGroup.position.set(orbitRadius, 0, 0); | + | |
| - | earthPivot.add(earthGroup); | + | |
| - | // Axial Tilt Container (Rotated 23.5 degrees) | + | ===== - Planets and the zodiac ===== |
| - | const axialTilt | + | |
| - | const tiltAngle | + | |
| - | axialTilt.rotation.z | + | |
| - | earthGroup.add(axialTilt); | + | |
| - | | + | {{https://starwalk.space/ |
| - | const earthGeo = new THREE.SphereGeometry(1.5, | + | |
| - | const earthMat = new THREE.MeshPhongMaterial({ color: 0x2288ff, flatShading: | + | |
| - | const earth = new THREE.Mesh(earthGeo, | + | |
| - | axialTilt.add(earth); | + | |
| - | // Axis Line | + | The diagram illustrates the fundamental concept of the zodiac, a narrow band flanking the ecliptic plane. As Earth orbits the Sun, shown by the small horizontal arrow, the Sun appears to travel against the background stars. Over thousands of years, ancient observers noticed that the Sun, Moon, and visible planets always remained within this path. They divided this 360-degree journey into twelve standardized, 30-degree segments, each designated by a primary constellation historically located within that area, creating the familiar zodiac. The long vertical arrow visually defines what it means for the Sun to be ‘in’ a sign; from Earth’s perspective, the Sun aligns directly with Aries. |
| - | const axisMat = new THREE.LineBasicMaterial({ color: 0xff2222, linewidth: 2 }); | + | |
| - | const axisPoints = []; | + | |
| - | axisPoints.push(new THREE.Vector3(0, -3, 0)); | + | |
| - | axisPoints.push(new THREE.Vector3(0, 3, 0)); | + | |
| - | const axisGeo = new THREE.BufferGeometry().setFromPoints(axisPoints); | + | |
| - | const axisLine = new THREE.Line(axisGeo, axisMat); | + | |
| - | axialTilt.add(axisLine); | + | |
| - | // Zodiac and Months Data | + | Astrology utilizes this standardized 12-sign model, derived from the original Babylonian calendar, rather than the actual, irregularly sized physical constellations, for divinatory purposes. A central belief posits that the precise placement of the Sun and other planets—which also travel very closely along the ecliptic—relative to these specific segments at any given moment can influence human personality and destiny. However, the prominent highlighting of Ophiuchus exposes a fundamental discrepancy between astronomical observation and traditional astrological charts. Axial precession has shifted actual constellation positions over thousands of years, meaning the Sun crosses thirteen groupings, including Ophiuchus, but astrology (a pseudoscience) maintains its ancient, symbolic 12-sign framework, ignoring this gravitational shift. |
| - | const zodiacData = [ | + | |
| - | { month: ' | + | |
| - | { month: ' | + | |
| - | { month: ' | + | |
| - | { month: ' | + | |
| - | { month: ' | + | |
| - | { month: ' | + | |
| - | { month: ' | + | |
| - | { month: ' | + | |
| - | { month: ' | + | |
| - | { month: ' | + | |
| - | { month: ' | + | |
| - | { month: ' | + | |
| - | ]; | + | |
| - | // Generate Zodiac Sprites | + | The seven-day week is a celestial legacy where each day was originally dedicated to one of the seven classical " |
| - | const backgroundRadius = 45; | + | |
| - | zodiacData.forEach((data, index) => { | + | |
| - | const angle = (index / 12) * Math.PI * 2; | + | |
| - | + | ||
| - | const canvas = document.createElement(' | + | |
| - | canvas.width = 256; canvas.height = 128; | + | |
| - | const ctx = canvas.getContext(' | + | |
| - | ctx.fillStyle = '# | + | |
| - | ctx.textAlign = ' | + | |
| - | + | ||
| - | ctx.font = '40px Arial'; | + | |
| - | ctx.fillStyle = '# | + | |
| - | ctx.fillText(data.symbol, 128, 40); | + | |
| - | + | ||
| - | ctx.font = '24px Arial'; | + | |
| - | ctx.fillStyle = '# | + | |
| - | ctx.fillText(data.sign, 128, 75); | + | |
| - | + | ||
| - | ctx.font = '20px Arial'; | + | |
| - | ctx.fillStyle = '# | + | |
| - | ctx.fillText(data.month, | + | |
| - | const texture = new THREE.CanvasTexture(canvas); | + | ^ English ^ Bangla ^ German ^ Italian ^ Persian ^ |
| - | const spriteMat = new THREE.SpriteMaterial({ map: texture, transparent: | + | | Sunday [Sun's Day] | Robibar [Day of the Sun] | Sonntag [Sun day] | Domenica [Lord' |
| - | const sprite = new THREE.Sprite(spriteMat); | + | | Monday [Moon' |
| - | + | | Tuesday [Tiw's Day / Mars] | Mongolbar [Day of Mars] | Dienstag [Tiw's Day] | Martedì [Mars day] | Bahram [Day of Mars] | | |
| - | | + | | Wednesday [Woden' |
| - | | + | | Thursday [Thor' |
| - | | + | | Friday [Frigg' |
| - | }); | + | | Saturday [Saturn' |
| - | let isOrbiting | + | ===== - Stars and the constellations ===== |
| - | let orbitAngle | + | {{https:// |
| - | const orbitSpeed | + | |
| - | // UI Elements | + | The figure represents the celestial sphere |
| - | const seasonDisplay = document.getElementById(' | + | |
| - | const monthDisplay = document.getElementById(' | + | |
| - | const zodiacDisplay = document.getElementById(' | + | |
| - | const toggleBtn = document.getElementById(' | + | |
| - | toggleBtn.addEventListener(' | + | Just as the terrestrial globe is divided into distinct countries with defined borders, the celestial map is partitioned into 88 official constellations as recognized |
| - | isOrbiting = !isOrbiting; | + | |
| - | toggleBtn.innerText = isOrbiting ? "Pause Orbit" : " | + | |
| - | }); | + | |
| - | + | ||
| - | // Animation Loop | + | |
| - | function animate() { | + | |
| - | requestAnimationFrame(animate); | + | |
| - | + | ||
| - | if (isOrbiting) { | + | |
| - | orbitAngle -= orbitSpeed; | + | |
| - | if (orbitAngle < 0) orbitAngle += Math.PI * 2; | + | |
| - | + | ||
| - | earthPivot.rotation.y = orbitAngle; | + | |
| - | + | ||
| - | // Keep the Earth' | + | |
| - | earthGroup.rotation.y = -orbitAngle; | + | |
| - | + | ||
| - | // Earth daily rotation | + | |
| - | earth.rotation.y += 0.05; | + | |
| - | + | ||
| - | // Update UI based on orbit angle | + | |
| - | // Normalize angle from 0 to 2PI starting from right side | + | |
| - | let normalizedAngle = (-orbitAngle + Math.PI*2) % (Math.PI | + | |
| - | let degrees = (normalizedAngle | + | |
| - | + | ||
| - | // Determine Season (Northern Hemisphere) | + | |
| - | if (degrees >= 315 || degrees < 45) seasonDisplay.innerText = " | + | |
| - | else if (degrees >= 45 && degrees < 135) seasonDisplay.innerText = " | + | |
| - | else if (degrees >= 135 && degrees < 225) seasonDisplay.innerText = " | + | |
| - | else seasonDisplay.innerText = " | + | |
| - | + | ||
| - | // Determine Month and Zodiac (12 segments of 30 degrees) | + | |
| - | const segment = Math.floor(degrees / 30); | + | |
| - | const currentData = zodiacData[segment % 12]; | + | |
| - | monthDisplay.innerText = currentData.month; | + | |
| - | zodiacDisplay.innerText = `${currentData.sign} ${currentData.symbol}`; | + | |
| - | } | + | |
| - | + | ||
| - | renderer.render(scene, camera); | + | |
| - | } | + | |
| - | + | ||
| - | // Handle Window Resize | + | |
| - | window.addEventListener(' | + | |
| - | camera.aspect = window.innerWidth / window.innerHeight; | + | |
| - | camera.updateProjectionMatrix(); | + | |
| - | renderer.setSize(window.innerWidth, window.innerHeight); | + | |
| - | }); | + | |
| - | + | ||
| - | animate(); | + | |
| - | </ | + | |
| - | </ | + | |
| - | </ | + | |
| - | ===== - Moon and eclipses ===== | + | |
| - | + | ||
| - | {{https:// | + | |
| - | + | ||
| - | {{https:// | + | |
| - | + | ||
| - | ===== - Stars and constellations ===== | + | |
| - | {{https:// | + | |
| + | The constellations are often organized into families based on their shared history, position, or mythological themes, providing both astronomical and cultural significance to the viewer. For instance, the Zodiac family lies along the ecliptic, while the Perseus family contains characters from the Andromeda myth, including Cepheus and Cassiopeia. Astronomically, | ||
| + | The prominent dotted line bisecting the map is the ecliptic, representing the apparent path the Sun follows across the celestial sphere over the course of a year. This path also marks the plane of the Earth' | ||
courses/ast100/7.3.1774276433.txt.gz · Last modified: by asad
