太阳在黄道上的路径

太阳在黄道上的路径
几何画板及绘图内容加载中,请稍等……
2016-05-25 06:28
①这个范例演示了太阳在24小时内穿越天球体的路径;②涉及的核心数学概念包括函数图像、三角函数、解析几何和几何变换;③作图要点使用了GeoGebra命令如Intersect(相交)、If(条件)、Rotate(旋转)、Segment(线段)、Surface(曲面)、Angle(角度)、Plane(平面)、Vector(向量)、Sequence(数列)、Point(点);④适合高中阶段学习天文学和数学的学生使用。

GeoGebra 命令及参数

  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