Sun's Path on the Celestial Sphere
Loading the math board and drawing, please wait…
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
Intersect(xAxis, yAxis) → AIf(celframe ≟ false, 0°, 90° - lat) → lat3If(celframe ≟ true, 0°, 90° - lat) → lat2Rotate(Circle[A, B], (-lat2), yAxis) → cRotate(Circle[(0, 0, sin(skyang2)), cos(skyang2), zAxis], (-lat2), yAxis) → sunRotate(Circle[A, B], lat3, yAxis) → latsphereIntersect(latsphere, sun) → C, D, ,Segment((0, 0, 0), D) → riselatSurface(((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) → skyhalfSegment((0, 0, 0), D) → riseraySegment(A, North) → northrayAngle(riseray, northray) → azimuthriseSegment(((0.03 * ss), ys, 0), (0, ys, (0.1 * ss))) → stickleg2Segment(((-0.03 * ss), ys, 0), (0, ys, (0.1 * ss))) → stickleg1Segment((0, ys, (0.1 * ss)), (0, ys, (0.2 * ss))) → stickbodySegment(((0.03 * ss), ys, (0.1 * ss)), (0, ys, (0.2 * ss))) → stickarm2Segment(((-0.03 * ss), ys, (0.1 * ss)), (0, ys, (0.2 * ss))) → stickarm1Surface(((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) → halfspRotate(Translate[stickman, Vector[(0, 0, -0.01)]], lat3, yAxis) → stickfinalRotate(Rotate[Circle[A, B], 90°, xAxis], lat3, yAxis) → meridianPlane((cos(90° - lat3), 0, sin(90° - lat3)), yAxis) → northsouthRotate((0, 0, 1.2), (-lat2), yAxis) → NPRotate(Vector[(0, 0, 0), (0, 0, 1.2)], (-lat2), yAxis) → northpoleVector((0, 0, 0), ((1.2 * cos(90° - lat3)), 0, (1.2 * sin(90° - lat3)))) → uplineSegment((0, 0, 0), C) → setrayAngle(northray, setray, Vector[(-upline)]) → azimuthsetSequence((360 * RandomUniform[0, 1]) + ((0 * i))°, i, 1, nstars) → ranlonSequence((360 * RandomUniform[0, 1]) + ((0 * i))°, i, 1, nstars) → ranlatRotate(Rotate[Sequence[((cos(ranlat(i)) * cos(ranlon(i))), (cos(ranlat(i)) * sin(ranlon(i))), sin(ranlat(i))), i, 1, nstars], spang, zAxis], (-lat2), yAxis) → ranstarsRotate((0, 0, 1), (-lat2), yAxis) → NorthstarPoint(sun, spys) → StarSegment((1.83, 18.1), (1.83, 17.7)) → eq2lineSegment((0.83, 18.1), (0.83, 17.7)) → solslineSegment((-0.18, 18.1), (-0.18, 17.7)) → eq3line