墨卡托投影下的罗盘航向线与大圆轨迹

墨卡托投影下的罗盘航向线与大圆轨迹
几何画板及绘图内容加载中,请稍等……
2024-02-10 00:07
所属专题 Earth and Sun
该范例演示如何把地球球面上的经纬线与两点之间的两类路径映射到平面:一类是洛克辛线(恒向航向的曲线),另一类是正向的大圆航线。核心数学概念包括:球面几何、经纬度坐标、参数曲线与轨迹(locus)、切圆/球面曲线的构造、以及在不同地图变换下曲率与航向的差异。作图要点:利用 Sphere 生成球体参考;用 Point 与 Circle/CircumcircleArc 构造相关几何要素,并通过 IntersectPath、ClosestPoint 来确定球面上路径与投影基准的交点/最近点;使用 Sequence 与 IndexOf 便于参数点取样与索引;通过 If 与 Arc 等条件与角度弧段控制曲线分段生成;最终以 CurveCartesian 将参数化轨迹映射到直角坐标平面,配合经纬线网格(地图经线/纬线)对象(如 mapaMeridianos、mapaParalelosN/S、mapaEcuador 等)实现墨卡托网格与路径叠加显示。适合高中到大学的数学建模、地理信息/制图数学入门课程,以及希望将坐标变换与球面路径可视化的教学与研究用途。

GeoGebra 命令及参数

  1. Sphere((0, 0, 0), (0.999 * 5)) → tierra
  2. PointIn(tierra) → A
  3. PointIn(tierra) → B
  4. IntersectPath(Plane[(0, 0, 0), A, B], tierra) → ortodromia
  5. Arc(ortodromia, A, B) → arcoOrtodromiaAB
  6. Sequence(Circle[(5; 0; (-15° * k)), (5; 90°; (-15° * k)), (5; 180°; (-15° * k))], k, 1, 5) → paralelosS
  7. Sequence(Segment[(-180 + k, -180), (-180 + k, 180)], k, 0, 360, 15) → mapaMeridianos
  8. Sequence(Segment[(-180, (180 / pi * ln(tan(pi / 4 + (k * ° / 2))))), (180, (180 / pi * ln(tan(pi / 4 + (k * ° / 2)))))], k, 15, 75, 15) → mapaParalelosN
  9. Sequence(Segment[(-180, (-180 / pi * ln(tan(pi / 4 + (k * ° / 2))))), (180, (-180 / pi * ln(tan(pi / 4 + (k * ° / 2)))))], k, 15, 75, 15) → mapaParalelosS
  10. If(abs(lonB - lonA) ≤ 180°, lonB - lonA, lonB - lonA < -180°, 360° + lonB - lonA, lonB - lonA - 360°) → inc
  11. Circle(zAxis, A) → loxodromia2
  12. If(abs(lonB - lonA) ≤ 180°, {Segment[AA, BB]}, lonB - lonA > 180°, {Segment[AA, mapaLoxoAA'(1) - (360, 0)], Segment[mapaLoxoAA'(1), BB]}, {Segment[AA, mapaLoxoAA'(1)], Segment[mapaLoxoAA'(1) - (360, 0), BB]}) → mapaArcoLoxodromia
  13. Segment((-180, 0), (180, 0)) → mapaEcuador
  14. Segment((-180, -180), (-180, 180)) → mapaGreenwich2a
  15. Segment((180, -180), (180, 180)) → mapaGreenwich2b
  16. Segment((0, -180), (0, 180)) → mapaGreenwich
  17. Sequence(Circle[(5.01; 0; (15° * k)), (5.01; 90°; (15° * k)), (5.01; 180°; (15° * k))], k, 1, 5) → paralelosN
  18. Sequence(Circle[PN, (5.01; (15° * k); 0), PS], k, 1, 11) → meridianos
  19. Point(ortodromia) → OrtoP
  20. Locus(MapaOrtoP, OrtoP) → mapaOrtodromia
  21. Point(arcoOrtodromiaAB) → OrtoABarcoP
  22. Locus(MapaOrtoABarcoP, OrtoABarcoP) → mapaOrtodromiaABarco
  23. Circle((0, 0, 0), 5, Segment[PS + (0.075 * PS), PN + (0.075 * PN)]) → ecuador
  24. Point(Segment[AA', BB']) → LoxoArcoP
  25. Locus(EsferaLoxoArcoP, LoxoArcoP) → esferaArcoLoxodromia
  26. If(a, 11241, b, 32090, A ≟ B, 0, round((6371 / 5 * arcoOrtodromiaAB))) → disOrto
  27. If(A ≟ B, 0, lonA ≟ lonB, round(disOrto), latA ≟ latB, round((((6371 * cos(latA)) * abs(arg(B) - arg(A))) * pi / (180°))), round(abs((((6371 * pi / 180) * (latB / ° - latA / °)) * sqrt(1 + q^(2)) / q)))) → disLoxo
  28. Arc(ortodromia, B, A) → arcoOrtodromiaBA
  29. Point(arcoOrtodromiaBA) → OrtoBAarcoP
  30. Locus(MapaOrtoBAarcoP, OrtoBAarcoP) → mapaOrtodromiaBAarco
  31. Circle((A + B) / 2, A, Vector[(0, 0, 0), (A + B) / 2]) → circular
  32. Point(circular) → C
  33. Locus(MapaC, C) → mapaCircular
  34. Point(circular) → CircP
  35. Sequence((5; (cities(k, 3))°; (cities(k, 4))°), k, 1, Length[cities]) → cercanos
  36. ClosestPoint(cercanos, A) → CercanoA
  37. ClosestPoint(cercanos, B) → CercanoB
  38. IndexOf(CercanoA, cercanos) → indiceCercaA
  39. IndexOf(CercanoB, cercanos) → indiceCercaB
  40. If(A ≟ B, 0, round((6371 / 5 * Circumference[circular]))) → disCirc
  41. CircumcircleArc(PN, A, PS) → loxodromia3
  42. CurveCartesian((5 * cos(t + λ) / cosh((q * t))), (5 * sin(t + λ) / cosh((q * t))), (5 * tanh((q * t))), t, (-20 * pi), (20 * pi)) → loxodromia
  43. CircumcircleArc(PN, (5; 0; 0), PS) → greenwich
  44. CircumcircleArc(PN, (-5; 0; 0), PS) → greenwich'
  45. Segment(AA', BB') → f

AI 绘图提示语参考

在一个球体上绘制两条路径:一条是等角航线(保持恒定航向的螺旋线),另一条是球面上最短的大圆航线。将这两条路径使用墨卡托投影映射到平面上,展示它们在平面上的形态。同时绘制地球的网格线,包括经线和纬线,以及赤道作为参考线。通过对比两条路径在平面上的表现,说明不同球面路径在墨卡托投影下的差异。
以上提示语为根据原始绘图命令整理而来,仅供参考。