Skip to main content
100%

Cox Projection - Wallpaper

✓ Published0🌍 Public
PPhilippe Rivière
Last edited May 3, 2018
Created on Jun 8, 2017

This example presents the Cox projection, a conformal map of the world that fits within an equilateral triangle, with Antarctica omitted for a cleaner visual. The code computes the underlying elliptic-function transformation in JavaScript, using a `Complex` class to handle the math. It renders six rotated copies of this triangular map into a single Canvas, creating a wallpaper-like tiling effect. The implementation relies on `d3.geoProjection` with a custom `coxRaw` function, and draws geographic data from the `world-atlas` TopoJSON dataset using `d3.geoPath` with Canvas context.

AI-generated description

Conformal projection of the Sphere within an equilateral triangle.

Wallpaper version, ignoring Antarctica

Original research by Philippe Rivière for d3-geo-projection, issue #118.

(See also the North polar aspect.)

Reference papers:

  • J. F. Cox, Représentation de la surface entière de la terre dans un triangle équilatéral. Bulletin de la Classe des Sciences, Académie Royale de Belgique, 5, 21: 66-71. Bruxelles, 1935.

  • J. Magis, Calcul du canevas de la représentation conforme de la sphère entière dans un triangle équilatéral. Bulletin Geodésique, 247-256. Paris, 1938.

  • L.P. Lee, Conformal Projections Based On Dixon Elliptic Functions, Cartographica: The International Journal for Geographic Information and Geovisualization > Vol. 13, # 1, June 1976.

  • M. Douglas McIlroy, Wallpaper maps, 2011.


<!-- signature --> [<img src="https://avatars1.githubusercontent.com/u/7001?s=20" />](https://github.com/Fil/) <em>Questions and comments welcome on [gitter.im/d3](https://gitter.im/d3/d3), [twitter](https://twitter.com/@recifs) or [slack](https://d3js.slack.com).</em> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-58621-8', 'auto'); ga('send', 'pageview'); </script>

forked from <a href='http://bl.ocks.org/Fil/'>Fil</a>'s block: <a href='http://bl.ocks.org/Fil/1aafd8fa22b62243290674384c364dd0'>Cox Projection</a>

forked from <a href='http://bl.ocks.org/Fil/'>Fil</a>'s block: <a href='http://bl.ocks.org/Fil/8277a0a590dec3debf142bcd1e827416'>Cox Projection - no ATA</a>

mit Licensed

Similar vizzes