Declination and Right Ascension: Star Position and Annual Path on the Celestial
Loading the math board and drawing, please wait…
① This animation demonstrates how a star's location on the celestial sphere is determined by its declination and right ascension, and also shows the annual apparent path of the Sun. ② Core mathematical concepts include spherical coordinate systems, vectors and planes in 3D space, parametric equations of ellipses, rotation and translation transformations, and angle measurement. ③ Construction highlights: using GeoGebra commands such as Line, Vector, Ellipse, Translate, Sphere, Segment, Circle, Rotate, Angle, Surface, and Intersect to build the celestial sphere, equatorial plane, ecliptic plane, star marker, and solar orbit; sliders control declination, right ascension, and date for dynamic interaction; key objects include raval, ra, dec2, rc, erad, deccon, obliq, argperi, ecc, fecc, au, bsemi, asemi, day, daydeg, rr, Ecenter3, focus, bang, z1, vtrans, orbitbot, sunorbit, text1, text2, Ebot, eaxisbot, srad, Nbot, vobliq, equatorbot, Scenter3, Sunbot, solsticesbot, c, obliqdisplay, argpdisplay, Stardec, and darksidebot. ④ Suitable for high school astronomy electives, introductory university astronomy, or solid geometry courses, helping students connect celestial coordinates with 3D geometric visualization.
GeoGebra Commands & Parameters
Line((6, 6, 0), zAxis) → decconVector((0, 0, 0), (0, 0, z1)) → vtransEllipse(((-2 * focus), 0, z1), (0, 0, z1), asemi, xOyPlane) → orbitbotTranslate(Rotate[Rotate[orbitbot, argperi - 90°, zAxis], (-obliq), yAxis], vtrans) → sunorbitSphere((0, 0, z1), erad) → EbotSegment((0, 0, z1 - (1.2 * erad)), (0, 0, z1 + (1.2 * erad))) → eaxisbotVector((0, 0, 0), (cos(obliq + π / 2), 0, sin(obliq + π / 2))) → vobliqCircle((0, 0, 0), erad, zAxis) → equatorbotRotate(Ecenter3 - (0, 0, z0), (-obliq), yAxis) → Scenter3Sphere(Scenter3, srad) → SunbotLine((-1, 0, z1), (1, 0, z1)) → solsticesbotAngle((x(Ecenter3) - (10 * sin(obliq)), y(Ecenter3), z0 + (10 * cos(obliq))), Ecenter3, (x(Ecenter3), y(Ecenter3), z0 + 10)) → obliqdisplayAngle((0, -10, z0), (0, 0, z0), ((10 * sin(argperi)), (-10 * cos(argperi)), z0), zAxis) → argpdisplaySurface((((((-1.02 * erad) * cos(j)) * cos(daydeg)) - ((((1.02 * erad) * sin(i)) * sin(j)) * sin(daydeg))) * cos((-obliq))) + ((z1 + (((1.02 * erad) * cos(i)) * sin(j))) * sin((-obliq))), (((-1.02 * erad) * cos(j)) * sin(daydeg)) + ((((1.02 * erad) * sin(i)) * sin(j)) * cos(daydeg)), ((-((((-1.02 * erad) * cos(j)) * cos(daydeg)) - ((((1.02 * erad) * sin(i)) * sin(j)) * sin(daydeg)))) * sin((-obliq))) + ((z1 + (((1.02 * erad) * cos(i)) * sin(j))) * cos((-obliq))), i, 0, (2 * π), j, 0, π / 2) → darksidebotSegment((0, -20, z1), (0, 0, 0)) → lineofnodesbotSegment(Stardec, (x(Stardec), y(Stardec), 0)) → decvlineSegment((0, 0, 0), (x(Stardec), y(Stardec), 0)) → dechlineSegment((0, 0, 0), Stardec) → declineAngle((0, -10, 0), (0, 0, 0), ((10 * cos(ra - 90°)), (10 * sin(ra - 90°)), 0), zAxis) → radispAngle(dechline, decline) → decdispSphere((0, 0, 0), 5) → celsphereIntersect(decline, celsphere) → celstar_1, celstar_2Circle(celstar_2, 0.2, decline) → celcircle