<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://patrius.cnes.fr/index.php?action=history&amp;feed=atom&amp;title=User_Manual_4.13_Projections</id>
	<title>User Manual 4.13 Projections - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://patrius.cnes.fr/index.php?action=history&amp;feed=atom&amp;title=User_Manual_4.13_Projections"/>
	<link rel="alternate" type="text/html" href="https://patrius.cnes.fr/index.php?title=User_Manual_4.13_Projections&amp;action=history"/>
	<updated>2026-04-04T03:15:06Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://patrius.cnes.fr/index.php?title=User_Manual_4.13_Projections&amp;diff=3617&amp;oldid=prev</id>
		<title>Admin le 21 décembre 2023 à 14:29</title>
		<link rel="alternate" type="text/html" href="https://patrius.cnes.fr/index.php?title=User_Manual_4.13_Projections&amp;diff=3617&amp;oldid=prev"/>
		<updated>2023-12-21T14:29:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 21 décembre 2023 à 14:29&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l118&quot;&gt;Ligne 118 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 118 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ProjectionEllipsoid &lt;/del&gt;ellipsoid = new &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ProjectionEllipsoid&lt;/del&gt;(6378137.0, 1. / 298.257223563, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;null&lt;/del&gt;, &quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Earth&lt;/del&gt;&quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EllipsoidBodyShape &lt;/ins&gt;ellipsoid = new &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;OneAxisEllipsoid&lt;/ins&gt;(6378137.0, 1. / 298.257223563, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;FramesFactory.getITRF()&lt;/ins&gt;, &quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;earth&lt;/ins&gt;&quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final Mercator projection = new Mercator(0., ellipsoid);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final Mercator projection = new Mercator(0., ellipsoid);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l127&quot;&gt;Ligne 127 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 127 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GeodeticPoint &lt;/del&gt;toulouse = new &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GeodeticPoint&lt;/del&gt;(0.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;758011794744558&lt;/del&gt;, 0.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0261405281982074&lt;/del&gt;, 256.);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EllipsoidPoint &lt;/ins&gt;toulouse = new &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EllipsoidPoint&lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ellipsoid, LLHCoordinatesSystem.ELLIPSODETIC, &lt;/ins&gt;0.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;758011794&lt;/ins&gt;, 0.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;026140528&lt;/ins&gt;, 256.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &quot;toulouse&quot;&lt;/ins&gt;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final Vector2D projectedPoint = projection.applyTo(toulouse);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final Vector2D projectedPoint = projection.applyTo(toulouse);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l134&quot;&gt;Ligne 134 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 134 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GeodeticPoint &lt;/del&gt;geodeticCoordinates = projection.applyInverseTo(projectedPoint.getX(), projectedPoint.getY());&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EllipsoidPoint &lt;/ins&gt;geodeticCoordinates = projection.applyInverseTo(projectedPoint.getX(), projectedPoint.getY());&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l142&quot;&gt;Ligne 142 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 142 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ProjectionEllipsoid &lt;/del&gt;ellipsoid = new &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ProjectionEllipsoid&lt;/del&gt;(6378137.0, 1. / 298.257223563, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;null&lt;/del&gt;, &quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Earth&lt;/del&gt;&quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EllipsoidBodyShape &lt;/ins&gt;ellipsoid = new &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;OneAxisEllipsoid&lt;/ins&gt;(6378137.0, 1. / 298.257223563, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;FramesFactory.getITRF()&lt;/ins&gt;, &quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;earth&lt;/ins&gt;&quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final Mercator projection = new Mercator(0., ellipsoid);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final Mercator projection = new Mercator(0., ellipsoid);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l151&quot;&gt;Ligne 151 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 151 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GeodeticPoint &lt;/del&gt;toulouse = new &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GeodeticPoint&lt;/del&gt;(0.758011794, 0.026140528, 256.);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EllipsoidPoint &lt;/ins&gt;toulouse = new &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EllipsoidPoint&lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ellipsoid, LLHCoordinatesSystem.ELLIPSODETIC, &lt;/ins&gt;0.758011794, 0.026140528, 256.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &quot;toulouse&quot;&lt;/ins&gt;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GeodeticPoint &lt;/del&gt;london = new &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GeodeticPoint&lt;/del&gt;(0.898844565, 0.002268928, 25.);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EllipsoidPoint &lt;/ins&gt;london = new &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EllipsoidPoint&lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ellipsoid, LLHCoordinatesSystem.ELLIPSODETIC, &lt;/ins&gt;0.898844565, 0.002268928, 25.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &quot;london&quot;&lt;/ins&gt;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final Vector2D projectedToulouse = projection.applyTo(toulouse);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final Vector2D projectedToulouse = projection.applyTo(toulouse);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final Vector2D projectedLondon = projection.applyTo(london);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final Vector2D projectedLondon = projection.applyTo(london);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l161&quot;&gt;Ligne 161 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 161 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;final GeodeticPoint toulouse = new GeodeticPoint(0.758011794, 0.026140528, 256.);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final List&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EllipsoidPoint &lt;/ins&gt;&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;final GeodeticPoint london = new GeodeticPoint(0.898844565, 0.002268928, 25.);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final List&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GeodeticPoint&lt;/del&gt;&amp;gt; list = new ArrayList&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GeodeticPoint&lt;/del&gt;&amp;gt;();&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list.add(toulouse);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list.add(toulouse);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list.add(london);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list.add(london);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l176&quot;&gt;Ligne 176 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 174 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ProjectionEllipsoid &lt;/del&gt;ellipsoid = new &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ProjectionEllipsoid&lt;/del&gt;(6378137.0, 1. / 298.257223563, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;null&lt;/del&gt;, &quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Earth&lt;/del&gt;&quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EllipsoidBodyShape &lt;/ins&gt;ellipsoid = new &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;OneAxisEllipsoid&lt;/ins&gt;(6378137.0, 1. / 298.257223563, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;FramesFactory.getITRF()&lt;/ins&gt;, &quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;earth&lt;/ins&gt;&quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;final GeodeticPoint toulouse = new GeodeticPoint(0.758011794, 0.026140528, 256.);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;final GeodeticPoint london = new GeodeticPoint(0.898844565, 0.002268928, 25.&lt;/del&gt;);&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key w3?hpatrius?hprod:diff:1.41:old-3567:rev-3617:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://patrius.cnes.fr/index.php?title=User_Manual_4.13_Projections&amp;diff=3567&amp;oldid=prev</id>
		<title>Admin : Page créée avec « == Introduction == === Scope === The scope of this section is to present the projections features available in Patrius library. Patrius provides classes to perform project... »</title>
		<link rel="alternate" type="text/html" href="https://patrius.cnes.fr/index.php?title=User_Manual_4.13_Projections&amp;diff=3567&amp;oldid=prev"/>
		<updated>2023-12-19T13:47:46Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « == Introduction == === Scope === The scope of this section is to present the projections features available in Patrius library. Patrius provides classes to perform project... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Introduction ==&lt;br /&gt;
=== Scope ===&lt;br /&gt;
The scope of this section is to present the projections features available in Patrius library.&lt;br /&gt;
Patrius provides classes to perform projections on an ellipsoid as well as various computation on the surface of an ellipsoid. Common available projections are:&lt;br /&gt;
* Mercator&lt;br /&gt;
* Flamsteed-Samson&lt;br /&gt;
* Identity projection&lt;br /&gt;
&lt;br /&gt;
=== Javadoc ===&lt;br /&gt;
All the classes related to projections are in the following packages:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Library&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Javadoc&lt;br /&gt;
|-&lt;br /&gt;
|Patrius &lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/projections/package-summary.html Package fr.cnes.sirius.patrius.projections]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
More information about specific projections can be found using the following links:&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Mercator_projection Mercator projection]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Sinusoidal_projection Flamsteed-Samson projection]&lt;br /&gt;
&lt;br /&gt;
=== Useful Documents ===&lt;br /&gt;
None as of now.&lt;br /&gt;
&lt;br /&gt;
=== Package Overview ===&lt;br /&gt;
The projections package gathers:&lt;br /&gt;
* An interface for all projections: &amp;lt;code&amp;gt;IProjection&amp;lt;/code&amp;gt;&lt;br /&gt;
* Some available projections : &amp;lt;code&amp;gt;Mercator&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;GeneralizedFlamsteedSamson&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;IdentityProjection&amp;lt;/code&amp;gt;&lt;br /&gt;
* A ellipsoid with extended features: &amp;lt;code&amp;gt;ProjectionEllipsoid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The projection package can be summarized with the following UML diagram.&lt;br /&gt;
&lt;br /&gt;
Please note that not all implementations are present in the following diagram for the sake of clarity.&lt;br /&gt;
&lt;br /&gt;
[[File:Projections.png|center]]&lt;br /&gt;
&lt;br /&gt;
== Features Description ==&lt;br /&gt;
Projections provide three main features:&lt;br /&gt;
* Projection on an ellipsoid (and its inverse application)&lt;br /&gt;
* Discretisation between points on the surface of an ellipsoid&lt;br /&gt;
* Geometric computation on the surface of an ellipsoid using class ProjectionEllipsoid&lt;br /&gt;
&lt;br /&gt;
=== Projection on an ellipsoid ===&lt;br /&gt;
&lt;br /&gt;
Projection on an ellipsoid is a transformation taking geodetic coordinates (latitude, longitude, altitude) as input and returning 2D map coordinates (X, Y) as output.&lt;br /&gt;
Inverse transformation takes 2D map coordinates (X, Y) as input and returns geodetic coordinates (latitude, longitude, altitude) as output.&lt;br /&gt;
&lt;br /&gt;
Projection classes inherit projection interface &amp;lt;code&amp;gt;IProjection&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Available projections are:&lt;br /&gt;
* Mercator projection: &amp;lt;code&amp;gt;Mercator&amp;lt;/code&amp;gt;. The Mercator projection is a cylindrical map projection which became the standard map projection for nautical purposes because of its ability to represent lines of constant course, known loxodromes, as straight segments. Mercator projection is conformal (angles are preserved) but not equivalent (areas are not preserved).&lt;br /&gt;
&lt;br /&gt;
[[File:MercatorProjection.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
* Flamsteed-Samson projection: &amp;lt;code&amp;gt;GeneralizedFlamsteedSamson&amp;lt;/code&amp;gt;. This projection is also known as the sinusoidal projection. The sinusoidal projection is equal-area and preserves distances along the horizontals but is not conformal (angles are not preserved).&lt;br /&gt;
&lt;br /&gt;
[[File:SinusoidalProjection.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
* Identity projection: &amp;lt;code&amp;gt;IdentityProjection&amp;lt;/code&amp;gt;. Identity projection is the projection [latitude, longitude, altitude] =&amp;gt; [X = latitude, Y = longitude].&lt;br /&gt;
&lt;br /&gt;
All projections provide:&lt;br /&gt;
* direct transformation using method &amp;lt;code&amp;gt;applyTo()&amp;lt;/code&amp;gt;. It returns 2D map coordinates (X, Y) from geodetic coordinates (latitude, longitude, altitude).&lt;br /&gt;
* inverse transformation using method &amp;lt;code&amp;gt;applyInverseTo()&amp;lt;/code&amp;gt;. It returns geodetic coordinates (latitude, longitude, altitude) from 2D map coordinates (X, Y).&lt;br /&gt;
&lt;br /&gt;
=== Discretization ===&lt;br /&gt;
&lt;br /&gt;
All projection classes provide various discretization methods between geodetic points.&lt;br /&gt;
&lt;br /&gt;
* Discretization between two projected points using the method &amp;lt;code&amp;gt;discretize()&amp;lt;/code&amp;gt;. Maximum distance between discretized point has to be provided.&lt;br /&gt;
* Discretization along a polygon line of geodetic coordinates using the method &amp;lt;code&amp;gt;discretizeAndApplyTo()&amp;lt;/code&amp;gt;. Maximum distance between discretized point has to be provided as well as the discretization strategy.&lt;br /&gt;
&lt;br /&gt;
The discretization strategy is provided with the enumeration &amp;lt;code&amp;gt;EnumLineProperty&amp;lt;/code&amp;gt;. It offers the following possibilities:&lt;br /&gt;
* &amp;lt;code&amp;gt;STRAIGHT&amp;lt;/code&amp;gt;: straight line between two geodetic points.&lt;br /&gt;
* &amp;lt;code&amp;gt;GREAT_CIRCLE&amp;lt;/code&amp;gt;: arc being the shortest way to connect two geodetic points on an ellipsoid. The center of the ellipsis is the ellipsoid center.&lt;br /&gt;
* &amp;lt;code&amp;gt;STRAIGHT_RHUMB_LINE&amp;lt;/code&amp;gt;: arc between two geodetic points crossing all meridians of longitude at the same angle. It corresponds to a path of constant bearing as measured relative to true north. On Mercator projection, it is represented by a straight line.&lt;br /&gt;
&lt;br /&gt;
Other methods are available. For more information, refer to the javadoc of [{{JavaDoc4.13}}/fr/cnes/sirius/patrius/projections/AbstractProjection.html AbstractProjection] class.&lt;br /&gt;
&lt;br /&gt;
=== Computation on the surface of an ellipsoid ===&lt;br /&gt;
&lt;br /&gt;
A specific ellipsoid class has been defined to handle projections: &amp;lt;code&amp;gt;ProjectionEllipsoid&amp;lt;/code&amp;gt;. This class inherits the class &amp;lt;code&amp;gt;OneAxisEllipsoid&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
It provides many useful projection-related computations on the surface of an ellipsoid.&amp;lt;br&amp;gt;&lt;br /&gt;
Available features of &amp;lt;code&amp;gt;ProjectionEllipsoid&amp;lt;/code&amp;gt; are:&lt;br /&gt;
&lt;br /&gt;
* Distance computation:&lt;br /&gt;
&lt;br /&gt;
Orthodromic distance using method &amp;lt;code&amp;gt;computeOrthodromicDistance()&amp;lt;/code&amp;gt;. Orthodromic distance is the shortest path between two points.&amp;lt;br&amp;gt;&lt;br /&gt;
Loxodromic distance using method &amp;lt;code&amp;gt;computeLoxodromicDistance()&amp;lt;/code&amp;gt;. Loxodromic distance follows path of constant bearing: this is a straight line on Mercator projection.&amp;lt;br&amp;gt;&lt;br /&gt;
Meridional distance using method &amp;lt;code&amp;gt;computeMeridionalDistance()&amp;lt;/code&amp;gt;. Meridional distance is the shortest distance from one point to the equator (along a meridian).&lt;br /&gt;
&lt;br /&gt;
On next image, Loxodromic distance is in red, orthodromic distance in blue:&lt;br /&gt;
[[File:LoxodromieOrthodromie.png|center]]&lt;br /&gt;
&lt;br /&gt;
* Azimuth computation:&lt;br /&gt;
&lt;br /&gt;
Bearing using method &amp;lt;code&amp;gt;computeBearing()&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Spherical azimuth using method &amp;lt;code&amp;gt;computeSphericalAzimuth()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Other computations:&lt;br /&gt;
&lt;br /&gt;
Point along loxodrome, given a point, a distance from this point and an azimuth from this point, using method &amp;lt;code&amp;gt;computePointAlongLoxodrome()&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Point along orthodrome, given a point, a distance from this point and an azimuth from this point, using method &amp;lt;code&amp;gt;computePointAlongOrthodrome()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other methods are available. For more information, refer to the javadoc of [{{JavaDoc4.13}}/fr/cnes/sirius/patrius/projections/ProjectionEllipsoid.html ProjectionEllipsoid] class.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
Projections provide three main features:&lt;br /&gt;
* Projection on an ellipsoid (and its inverse application)&lt;br /&gt;
* Discretisation between points on the surface of an ellipsoid&lt;br /&gt;
* Geometric computation on the surface of an ellipsoid using class &amp;lt;code&amp;gt;ProjectionEllipsoid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Projection on an ellipsoid ===&lt;br /&gt;
&lt;br /&gt;
First an ellipsoid and a projection have to be defined, here using a simple centered Mercator projection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
final ProjectionEllipsoid ellipsoid = new ProjectionEllipsoid(6378137.0, 1. / 298.257223563, null, &amp;quot;Earth&amp;quot;);&lt;br /&gt;
final Mercator projection = new Mercator(0., ellipsoid);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then the created projection can be used in different ways:&lt;br /&gt;
&lt;br /&gt;
* Projection of geodetic coordinates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
final GeodeticPoint toulouse = new GeodeticPoint(0.758011794744558, 0.0261405281982074, 256.);&lt;br /&gt;
final Vector2D projectedPoint = projection.applyTo(toulouse);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Retrieve geodetic coordinates from Mercator 2D coordinates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
final GeodeticPoint geodeticCoordinates = projection.applyInverseTo(projectedPoint.getX(), projectedPoint.getY());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Discretization ===&lt;br /&gt;
&lt;br /&gt;
First an ellipsoid and a projection have to be defined, here using a simple centered Mercator projection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
final ProjectionEllipsoid ellipsoid = new ProjectionEllipsoid(6378137.0, 1. / 298.257223563, null, &amp;quot;Earth&amp;quot;);&lt;br /&gt;
final Mercator projection = new Mercator(0., ellipsoid);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then the created projection can be used in different ways:&lt;br /&gt;
&lt;br /&gt;
* Discretization between two projected points with a maximum distance between points of 1km:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
final GeodeticPoint toulouse = new GeodeticPoint(0.758011794, 0.026140528, 256.);&lt;br /&gt;
final GeodeticPoint london = new GeodeticPoint(0.898844565, 0.002268928, 25.);&lt;br /&gt;
final Vector2D projectedToulouse = projection.applyTo(toulouse);&lt;br /&gt;
final Vector2D projectedLondon = projection.applyTo(london);&lt;br /&gt;
final List&amp;lt;Vector2D&amp;gt; points = projection.discretize(projectedToulouse, projectedLondon, 1000., true);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Rhumb discretization along a polygon line with a maximum distance between points of 1km followed by projection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
final GeodeticPoint toulouse = new GeodeticPoint(0.758011794, 0.026140528, 256.);&lt;br /&gt;
final GeodeticPoint london = new GeodeticPoint(0.898844565, 0.002268928, 25.);&lt;br /&gt;
final List&amp;lt;GeodeticPoint&amp;gt; list = new ArrayList&amp;lt;GeodeticPoint&amp;gt;();&lt;br /&gt;
list.add(toulouse);&lt;br /&gt;
list.add(london);&lt;br /&gt;
final List&amp;lt;Vector2D&amp;gt; points = projection.discretizeAndApplyTo(list , EnumLineProperty.STRAIGHT_RHUMB_LINE, 1000.);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* etc. Other similar discretization features are available. See javadoc for more information.&lt;br /&gt;
&lt;br /&gt;
=== Computation on the surface of an ellipsoid ===&lt;br /&gt;
&lt;br /&gt;
First an ellipsoid has to be defined:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
final ProjectionEllipsoid ellipsoid = new ProjectionEllipsoid(6378137.0, 1. / 298.257223563, null, &amp;quot;Earth&amp;quot;);&lt;br /&gt;
final GeodeticPoint toulouse = new GeodeticPoint(0.758011794, 0.026140528, 256.);&lt;br /&gt;
final GeodeticPoint london = new GeodeticPoint(0.898844565, 0.002268928, 25.);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then this ellipsoid can be used to:&lt;br /&gt;
&lt;br /&gt;
* Compute distances on the surface of the ellipsoid:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
final double orthodromicDistance = ellipsoid.computeOrthodromicDistance(toulouse, london);&lt;br /&gt;
final double loxodromicDistance = ellipsoid.computeLoxodromicDistance(toulouse, london);&lt;br /&gt;
final double meridionalDistance = ellipsoid.computeMeridionalDistance(toulouse.getLatitude());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Compute azimuth angles on the surface of the ellipsoid:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
final double bearing = ellipsoid.computeBearing(toulouse, london);&lt;br /&gt;
final double sphericalAzimuth = ellipsoid.computeSphericalAzimuth(toulouse, london);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* etc. Other similar features are available. See javadoc for more information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
=== Interfaces ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Interface&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Summary&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Javadoc&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;IProjection&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Interface for projections on a 3D body.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/projections/IProjection.html ...]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Classes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Class&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Summary&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Javadoc&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;EnumLineProperty&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Enumeration of points connecting strategies on an ellipsoid.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/projections/EnumLineProperty.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;IdentityProjection&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Identity projection.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/projections/IdentityProjection.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;GeneralizedFlamsteedSamson&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Flamsteed-Samson projection.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/projections/GeneralizedFlamsteedSamson.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Mercator&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Mercator projection.&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/projections/Mercator.html ...]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;ProjectionEllipsoid&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Ellipsoid with extended features (features related to projections).&lt;br /&gt;
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/projections/ProjectionEllipsoid.html ...]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:User_Manual_4.13_Mission]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>