-using System;\r
+/*\r
+ * Yubeshi GPS Parser\r
+ *\r
+ * This software is distributed under a zlib-style license.\r
+ * See license.txt for more information.\r
+ */\r
+\r
+using System;\r
using System.Collections.Generic;\r
using System.Text;\r
\r
#region fields\r
private double degree;\r
private static readonly double degToRad = Constants.Pi / 180.0;\r
+ private static readonly double radToDeg = 180.0 / Constants.Pi;\r
#endregion\r
\r
#region constructors\r
\r
public Degree(int degree, int minute, int second)\r
{\r
- this.degree = (double)degree + minute / 60 + second / 3600;\r
+ if (degree < 0)\r
+ {\r
+ this.degree = (double)degree - minute / 60.0 - second / 3600.0;\r
+ }\r
+ else\r
+ {\r
+ this.degree = (double)degree + minute / 60.0 + second / 3600.0;\r
+ }\r
}\r
#endregion\r
\r
\r
#region public methods\r
\r
+ public static Degree FromRadian(double rad)\r
+ {\r
+ return new Degree(rad * radToDeg);\r
+ }\r
+\r
public override string ToString()\r
{\r
return String.Format("{0}°{1}′{2}″", Deg, Minute, Second);\r
--- /dev/null
+/*\r
+ * Yubeshi GPS Parser\r
+ *\r
+ * This software is distributed under a zlib-style license.\r
+ * See license.txt for more information.\r
+ */\r
+\r
+using System;\r
+using System.Collections.Generic;\r
+using System.Text;\r
+using NUnit.Framework;\r
+using Yubeshi;\r
+\r
+namespace YubeshiTest\r
+{\r
+ class DegreeTest\r
+ {\r
+\r
+ [Test]\r
+ public void FromDegree()\r
+ {\r
+ Degree d = new Degree(123.45);\r
+ Assert.AreEqual(123.45, (double)d);\r
+ }\r
+\r
+ [Test]\r
+ public void FromDMS()\r
+ {\r
+ Degree d = new Degree(123, 45, 6);\r
+ Assert.AreEqual(123.751666666666667, (double)d);\r
+ Assert.AreEqual(123, d.Deg);\r
+ Assert.AreEqual(45, d.Minute);\r
+ Assert.AreEqual(6, d.Second);\r
+ }\r
+\r
+ [Test]\r
+ public void FromRadian()\r
+ {\r
+ Degree d = Degree.FromRadian(-1.23);\r
+ Assert.AreEqual(-70.473808801091, (double)d, 1e-10);\r
+ }\r
+ }\r
+}\r
<Compile Include="UbxTest\SamplePackets.cs" />\r
<Compile Include="EnuCoordinateTest.cs" />\r
<Compile Include="UbxTest\RxmPacketTest.cs" />\r
+ <Compile Include="DegreeTest.cs" />\r
</ItemGroup>\r
<ItemGroup>\r
<None Include="app.config" />\r