This file is indexed.

/usr/share/doc/geographiclib/html/EquidistantTest_8cpp_source.html is in geographiclib-tools 1.8-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: EquidistantTest.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath">
    <ul>
      <li><a class="el" href="dir_f0cd0a94c27b816d12e5ff1a9ae56734.html">tools</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="headertitle">
<h1>EquidistantTest.cpp</h1>  </div>
</div>
<div class="contents">
<a href="EquidistantTest_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/**</span>
<a name="l00002"></a>00002 <span class="comment"> * \file EquidistantTest.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for azimuthal equidistant and Cassini-Soldner</span>
<a name="l00004"></a>00004 <span class="comment"> * projections</span>
<a name="l00005"></a>00005 <span class="comment"> *</span>
<a name="l00006"></a>00006 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) &lt;charles@karney.com&gt;</span>
<a name="l00007"></a>00007 <span class="comment"> * and licensed under the LGPL.  For more information, see</span>
<a name="l00008"></a>00008 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * Compile with -I../include and link with Geodesic.o GeodesicLine.o</span>
<a name="l00011"></a>00011 <span class="comment"> * AzimuthalEquidistant.o Gnomonic.o CassiniSoldner.o</span>
<a name="l00012"></a>00012 <span class="comment"> *</span>
<a name="l00013"></a>00013 <span class="comment"> * See the &lt;a href=&quot;EquidistantTest.1.html&quot;&gt;man page&lt;/a&gt; for usage</span>
<a name="l00014"></a>00014 <span class="comment"> * information.</span>
<a name="l00015"></a>00015 <span class="comment"> **********************************************************************/</span>
<a name="l00016"></a>00016 
<a name="l00017"></a>00017 <span class="preprocessor">#include &quot;<a class="code" href="Geodesic_8hpp.html" title="Header for GeographicLib::Geodesic class.">GeographicLib/Geodesic.hpp</a>&quot;</span>
<a name="l00018"></a>00018 <span class="preprocessor">#include &quot;<a class="code" href="AzimuthalEquidistant_8hpp.html" title="Header for GeographicLib::AzimuthalEquidistant class.">GeographicLib/AzimuthalEquidistant.hpp</a>&quot;</span>
<a name="l00019"></a>00019 <span class="preprocessor">#include &quot;<a class="code" href="CassiniSoldner_8hpp.html" title="Header for GeographicLib::CassiniSoldner class.">GeographicLib/CassiniSoldner.hpp</a>&quot;</span>
<a name="l00020"></a>00020 <span class="preprocessor">#include &quot;<a class="code" href="Gnomonic_8hpp.html" title="Header for GeographicLib::Gnomonic class.">GeographicLib/Gnomonic.hpp</a>&quot;</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include &quot;<a class="code" href="DMS_8hpp.html" title="Header for GeographicLib::DMS class.">GeographicLib/DMS.hpp</a>&quot;</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;sstream&gt;</span>
<a name="l00024"></a>00024 
<a name="l00025"></a>00025 <span class="preprocessor">#include &quot;EquidistantTest.usage&quot;</span>
<a name="l00026"></a>00026 
<a name="l00027"></a><a class="code" href="EquidistantTest_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00027</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
<a name="l00028"></a>00028   <span class="keyword">using namespace </span>GeographicLib;
<a name="l00029"></a>00029   <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> real;
<a name="l00030"></a>00030   <span class="keywordtype">bool</span> azimuthal = <span class="keyword">false</span>, cassini = <span class="keyword">false</span>, gnomonic = <span class="keyword">false</span>, reverse = <span class="keyword">false</span>;
<a name="l00031"></a>00031   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0 = 0, lon0 = 0;
<a name="l00032"></a>00032   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00033"></a>00033     a = Constants::WGS84_a&lt;real&gt;(),
<a name="l00034"></a>00034     r = Constants::WGS84_r&lt;real&gt;();
<a name="l00035"></a>00035   <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m &lt; argc; ++m) {
<a name="l00036"></a>00036     std::string arg(argv[m]);
<a name="l00037"></a>00037     <span class="keywordflow">if</span> (arg == <span class="stringliteral">&quot;-r&quot;</span>)
<a name="l00038"></a>00038       reverse = <span class="keyword">true</span>;
<a name="l00039"></a>00039     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">&quot;-c&quot;</span> || arg == <span class="stringliteral">&quot;-z&quot;</span> || arg == <span class="stringliteral">&quot;-g&quot;</span>) {
<a name="l00040"></a>00040       cassini = arg == <span class="stringliteral">&quot;-c&quot;</span>;
<a name="l00041"></a>00041       azimuthal = arg == <span class="stringliteral">&quot;-z&quot;</span>;
<a name="l00042"></a>00042       gnomonic = arg == <span class="stringliteral">&quot;-g&quot;</span>;
<a name="l00043"></a>00043       <span class="keywordflow">if</span> (m + 2 &gt;= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
<a name="l00044"></a>00044       <span class="keywordflow">try</span> {
<a name="l00045"></a>00045         <a class="code" href="classGeographicLib_1_1DMS.html#a9b6d1f79b4427f5076b98098d470228d">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
<a name="l00046"></a>00046                           lat0, lon0);
<a name="l00047"></a>00047       }
<a name="l00048"></a>00048       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {
<a name="l00049"></a>00049         std::cerr &lt;&lt; <span class="stringliteral">&quot;Error decoding arguments of &quot;</span> &lt;&lt; arg &lt;&lt; <span class="stringliteral">&quot;: &quot;</span>
<a name="l00050"></a>00050                   &lt;&lt; e.what() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;
<a name="l00051"></a>00051         <span class="keywordflow">return</span> 1;
<a name="l00052"></a>00052       }
<a name="l00053"></a>00053       m += 2;
<a name="l00054"></a>00054     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">&quot;-e&quot;</span>) {
<a name="l00055"></a>00055       <span class="keywordflow">if</span> (m + 2 &gt;= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
<a name="l00056"></a>00056       <span class="keywordflow">try</span> {
<a name="l00057"></a>00057         a = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[m + 1]));
<a name="l00058"></a>00058         r = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[m + 2]));
<a name="l00059"></a>00059       }
<a name="l00060"></a>00060       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {
<a name="l00061"></a>00061         std::cerr &lt;&lt; <span class="stringliteral">&quot;Error decoding arguments of -e: &quot;</span> &lt;&lt; e.what() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;
<a name="l00062"></a>00062         <span class="keywordflow">return</span> 1;
<a name="l00063"></a>00063       }
<a name="l00064"></a>00064       m += 2;
<a name="l00065"></a>00065     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">&quot;--version&quot;</span>) {
<a name="l00066"></a>00066       std::cout
<a name="l00067"></a>00067         &lt;&lt; PROGRAM_NAME
<a name="l00068"></a>00068         &lt;&lt; <span class="stringliteral">&quot;: $Id: EquidistantTest.cpp 6978 2011-02-21 22:42:11Z karney $\n&quot;</span>
<a name="l00069"></a>00069         &lt;&lt; <span class="stringliteral">&quot;GeographicLib version &quot;</span> &lt;&lt; GEOGRAPHICLIB_VERSION &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;
<a name="l00070"></a>00070       <span class="keywordflow">return</span> 0;
<a name="l00071"></a>00071     } <span class="keywordflow">else</span>
<a name="l00072"></a>00072       <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">&quot;-h&quot;</span> || arg == <span class="stringliteral">&quot;--help&quot;</span>), arg != <span class="stringliteral">&quot;--help&quot;</span>);
<a name="l00073"></a>00073   }
<a name="l00074"></a>00074 
<a name="l00075"></a>00075   <span class="keywordflow">if</span> (!(azimuthal || cassini || gnomonic)) {
<a name="l00076"></a>00076     std::cerr &lt;&lt; <span class="stringliteral">&quot;Must specify \&quot;-z lat0 lon0\&quot; or &quot;</span>
<a name="l00077"></a>00077               &lt;&lt; <span class="stringliteral">&quot;\&quot;-c lat0 lon0\&quot; or \&quot;-g lat0 lon0\&quot;\n&quot;</span>;
<a name="l00078"></a>00078     <span class="keywordflow">return</span> 1;
<a name="l00079"></a>00079   }
<a name="l00080"></a>00080 
<a name="l00081"></a>00081   <span class="keyword">const</span> Geodesic geod(a, r);
<a name="l00082"></a>00082   <span class="keyword">const</span> CassiniSoldner cs = cassini ?
<a name="l00083"></a>00083     CassiniSoldner(lat0, lon0, geod) : CassiniSoldner(geod);
<a name="l00084"></a>00084   <span class="keyword">const</span> AzimuthalEquidistant az(geod);
<a name="l00085"></a>00085   <span class="keyword">const</span> Gnomonic gn(geod);
<a name="l00086"></a>00086 
<a name="l00087"></a>00087   std::string s;
<a name="l00088"></a>00088   <span class="keywordtype">int</span> retval = 0;
<a name="l00089"></a>00089   std::cout &lt;&lt; std::fixed;
<a name="l00090"></a>00090   <span class="keywordflow">while</span> (std::getline(std::cin, s)) {
<a name="l00091"></a>00091     <span class="keywordflow">try</span> {
<a name="l00092"></a>00092       std::istringstream str(s);
<a name="l00093"></a>00093       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y, azi, rk;
<a name="l00094"></a>00094       std::string stra, strb;
<a name="l00095"></a>00095       <span class="keywordflow">if</span> (!(str &gt;&gt; stra &gt;&gt; strb))
<a name="l00096"></a>00096         <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">&quot;Incomplete input: &quot;</span> + s);
<a name="l00097"></a>00097       <span class="keywordflow">if</span> (reverse) {
<a name="l00098"></a>00098         x = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(stra);
<a name="l00099"></a>00099         y = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(strb);
<a name="l00100"></a>00100       } <span class="keywordflow">else</span>
<a name="l00101"></a>00101         <a class="code" href="classGeographicLib_1_1DMS.html#a9b6d1f79b4427f5076b98098d470228d">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
<a name="l00102"></a>00102       std::string strc;
<a name="l00103"></a>00103       <span class="keywordflow">if</span> (str &gt;&gt; strc)
<a name="l00104"></a>00104         <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">&quot;Extraneous input: &quot;</span> + strc);
<a name="l00105"></a>00105       <span class="keywordflow">if</span> (reverse) {
<a name="l00106"></a>00106         <span class="keywordflow">if</span> (cassini)
<a name="l00107"></a>00107           cs.Reverse(x, y, lat, lon, azi, rk);
<a name="l00108"></a>00108         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (azimuthal)
<a name="l00109"></a>00109           az.Reverse(lat0, lon0, x, y, lat, lon, azi, rk);
<a name="l00110"></a>00110         <span class="keywordflow">else</span>
<a name="l00111"></a>00111           gn.Reverse(lat0, lon0, x, y, lat, lon, azi, rk);
<a name="l00112"></a>00112         std::cout &lt;&lt; <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(lat, 15, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>
<a name="l00113"></a>00113                   &lt;&lt; <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(lon, 15, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>
<a name="l00114"></a>00114                   &lt;&lt; <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(azi, 15, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>
<a name="l00115"></a>00115                   &lt;&lt; <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(rk, 16, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;
<a name="l00116"></a>00116       } <span class="keywordflow">else</span> {
<a name="l00117"></a>00117         <span class="keywordflow">if</span> (cassini)
<a name="l00118"></a>00118           cs.Forward(lat, lon, x, y, azi, rk);
<a name="l00119"></a>00119         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (azimuthal)
<a name="l00120"></a>00120           az.Forward(lat0, lon0, lat, lon, x, y, azi, rk);
<a name="l00121"></a>00121         <span class="keywordflow">else</span>
<a name="l00122"></a>00122           gn.Forward(lat0, lon0, lat, lon, x, y, azi, rk);
<a name="l00123"></a>00123         std::cout &lt;&lt; <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(x, 10, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>
<a name="l00124"></a>00124                   &lt;&lt; <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(y, 10, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>
<a name="l00125"></a>00125                   &lt;&lt; <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(azi, 15, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>
<a name="l00126"></a>00126                   &lt;&lt; <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(rk, 16, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;
<a name="l00127"></a>00127       }
<a name="l00128"></a>00128     }
<a name="l00129"></a>00129     <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {
<a name="l00130"></a>00130       std::cout &lt;&lt; <span class="stringliteral">&quot;ERROR: &quot;</span> &lt;&lt; e.what() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;
<a name="l00131"></a>00131       retval = 1;
<a name="l00132"></a>00132     }
<a name="l00133"></a>00133   }
<a name="l00134"></a>00134 
<a name="l00135"></a>00135   <span class="keywordflow">return</span> retval;
<a name="l00136"></a>00136 }
</pre></div></div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Tue Feb 22 2011 for GeographicLib by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
</body>
</html>