Loxodrome vs Great-Circle Paths in Mercator Projection

Loxodrome vs Great-Circle Paths in Mercator Projection
Loading the math board and drawing, please wait…
2024-02-10 00:07
In collections Earth and Sun
This example demonstrates how to map two kinds of routes on a spherical Earth onto a plane using the Mercator projection: the loxodrome (rhumb line with constant bearing) and the great-circle orthodrome (shortest path on the sphere). It centers on spherical geometry and coordinate modeling with latitude/longitude, emphasizing parameterized curves, loci, and geometric construction on/around a reference sphere. The construction uses Sphere to establish the globe; Point, Segment, and Circle/CircumcircleArc to define geometric primitives; IntersectPath and ClosestPoint to locate intersections and nearest points needed for path formation; Sequence with IndexOf to sample parameter values and manage indexing of generated points; If and Arc to control conditional curve segments; and CurveCartesian to render the resulting parametric loci in Cartesian coordinates. Together with map grid elements (meridians and parallels, including an equator reference), the example provides a clear visual comparison of how different spherical paths appear under a conformal map projection. Suitable for high school advanced topics, university GIS/cartography-math modules, and teaching/learning visualization of coordinate transformations and spherical routes.

GeoGebra Commands & Parameters

  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 Drawing Prompt Reference

Draw two paths on a sphere: a loxodrome (rhumb line with constant bearing) and a great-circle orthodrome (shortest path on the sphere). Map these paths onto a plane using the Mercator projection to show their shapes on the plane. Include the grid lines of the Earth, such as meridians and parallels, and the equator as a reference line. Compare the appearances of the two paths under the conformal map projection to illustrate their differences.
The prompt above was compiled from the original drawing commands and is for reference only.