Sun's Path on the Celestial Sphere

Sun's Path on the Celestial Sphere
Loading the math board and drawing, please wait…
2016-05-25 06:28
This example demonstrates the path of the sun across the celestial sphere over a 24-hour period. It involves core math concepts like function graphing, trigonometry, coordinate geometry, and geometric transformations. Construction highlights the use of GeoGebra commands such as Intersect, If, Rotate, Segment, Surface, Angle, Plane, Vector, Sequence, and Point. Suitable for high school students studying astronomy and mathematics.

GeoGebra Commands & Parameters

  1. Intersect(xAxis, yAxis) → A
  2. If(celframe ≟ false, 0°, 90° - lat) → lat3
  3. If(celframe ≟ true, 0°, 90° - lat) → lat2
  4. Rotate(Circle[A, B], (-lat2), yAxis) → c
  5. Rotate(Circle[(0, 0, sin(skyang2)), cos(skyang2), zAxis], (-lat2), yAxis) → sun
  6. Rotate(Circle[A, B], lat3, yAxis) → latsphere
  7. Intersect(latsphere, sun) → C, D, ,
  8. Segment((0, 0, 0), D) → riselat
  9. Surface(((x(A) + (cos(i) * sin(j))) * cos(90° - lat)) + ((z(A) + cos(j)) * sin(90° - lat)), y(A) + (sin(i) * sin(j)), ((-(x(A) + (cos(i) * sin(j)))) * sin(90° - lat)) + ((z(A) + cos(j)) * cos(90° - lat)), i, 0, (2 * π), j, 0, π / 2) → skyhalf
  10. Segment((0, 0, 0), D) → riseray
  11. Segment(A, North) → northray
  12. Angle(riseray, northray) → azimuthrise
  13. Segment(((0.03 * ss), ys, 0), (0, ys, (0.1 * ss))) → stickleg2
  14. Segment(((-0.03 * ss), ys, 0), (0, ys, (0.1 * ss))) → stickleg1
  15. Segment((0, ys, (0.1 * ss)), (0, ys, (0.2 * ss))) → stickbody
  16. Segment(((0.03 * ss), ys, (0.1 * ss)), (0, ys, (0.2 * ss))) → stickarm2
  17. Segment(((-0.03 * ss), ys, (0.1 * ss)), (0, ys, (0.2 * ss))) → stickarm1
  18. Surface(((x(A) + (cos(i) * sin(j))) * cos(180° + lat3)) + ((z(A) + cos(j)) * sin(180° + lat3)), y(A) + (sin(i) * sin(j)), ((-(x(A) + (cos(i) * sin(j)))) * sin(180° + lat3)) + ((z(A) + cos(j)) * cos(180° + lat3)), i, 0, (2 * π), j, 0, π / 2) → halfsp
  19. Rotate(Translate[stickman, Vector[(0, 0, -0.01)]], lat3, yAxis) → stickfinal
  20. Rotate(Rotate[Circle[A, B], 90°, xAxis], lat3, yAxis) → meridian
  21. Plane((cos(90° - lat3), 0, sin(90° - lat3)), yAxis) → northsouth
  22. Rotate((0, 0, 1.2), (-lat2), yAxis) → NP
  23. Rotate(Vector[(0, 0, 0), (0, 0, 1.2)], (-lat2), yAxis) → northpole
  24. Vector((0, 0, 0), ((1.2 * cos(90° - lat3)), 0, (1.2 * sin(90° - lat3)))) → upline
  25. Segment((0, 0, 0), C) → setray
  26. Angle(northray, setray, Vector[(-upline)]) → azimuthset
  27. Sequence((360 * RandomUniform[0, 1]) + ((0 * i))°, i, 1, nstars) → ranlon
  28. Sequence((360 * RandomUniform[0, 1]) + ((0 * i))°, i, 1, nstars) → ranlat
  29. Rotate(Rotate[Sequence[((cos(ranlat(i)) * cos(ranlon(i))), (cos(ranlat(i)) * sin(ranlon(i))), sin(ranlat(i))), i, 1, nstars], spang, zAxis], (-lat2), yAxis) → ranstars
  30. Rotate((0, 0, 1), (-lat2), yAxis) → Northstar
  31. Point(sun, spys) → Star
  32. Segment((1.83, 18.1), (1.83, 17.7)) → eq2line
  33. Segment((0.83, 18.1), (0.83, 17.7)) → solsline
  34. Segment((-0.18, 18.1), (-0.18, 17.7)) → eq3line