OSDN Git Service

度分秒からの生成が正しく行われていなかった不具合を修正
authorkimikage <kimikage_ceo@hotmail.com>
Wed, 2 Feb 2011 14:17:07 +0000 (23:17 +0900)
committerkimikage <kimikage_ceo@hotmail.com>
Wed, 2 Feb 2011 14:17:07 +0000 (23:17 +0900)
Yubeshi/Degree.cs
YubeshiTest/DegreeTest.cs [new file with mode: 0755]
YubeshiTest/YubeshiTest.csproj

index 1ea6b1f..ec4323f 100755 (executable)
@@ -1,4 +1,11 @@
-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
@@ -9,6 +16,7 @@ namespace Yubeshi
         #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
@@ -19,7 +27,14 @@ namespace Yubeshi
 \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
@@ -73,6 +88,11 @@ namespace Yubeshi
 \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
diff --git a/YubeshiTest/DegreeTest.cs b/YubeshiTest/DegreeTest.cs
new file mode 100755 (executable)
index 0000000..57e7ed9
--- /dev/null
@@ -0,0 +1,43 @@
+/*\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
index 3be3258..ed88ab9 100755 (executable)
@@ -57,6 +57,7 @@
     <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