{"id":858,"date":"2017-02-02T19:32:03","date_gmt":"2017-02-02T11:32:03","guid":{"rendered":"http:\/\/www.luwl.net\/?p=858"},"modified":"2017-02-02T19:32:16","modified_gmt":"2017-02-02T11:32:16","slug":"%e6%97%a5%e5%87%ba%e6%97%a5%e8%90%bd%e5%8f%8a%e6%96%b9%e4%bd%8d%e8%a7%92%e8%ae%a1%e7%ae%97","status":"publish","type":"post","link":"http:\/\/www.luwl.net\/?p=858","title":{"rendered":"\u65e5\u51fa\u65e5\u843d\u53ca\u65b9\u4f4d\u89d2\u8ba1\u7b97html"},"content":{"rendered":"<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n\r\n&lt;!DOCTYPE html PUBLIC &quot;-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN&quot; &quot;http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd&quot;&gt;\r\n&lt;html xmlns=&quot;http:\/\/www.w3.org\/1999\/xhtml&quot; lang=&quot;zh-CN&quot;&gt;&lt;head&gt;&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html; charset=GBK&quot;&gt;\r\n&lt;title&gt;\u592a\u9633\u9ad8\u5ea6\u89d2\u7684\u8ba1\u7b97-\u592a\u9633\u9ad8\u5ea6\u89d2\u5728\u7ebf\u8ba1\u7b97\u5668-\u592a\u9633\u65b9\u4f4d\u89d2\u8ba1\u7b97\u8f6f\u4ef6&lt;\/title&gt;\r\n&lt;body&gt;\r\n&lt;script type=&quot;text\/javascript&quot;&gt;\r\n\/\/ sunangle.js\r\n\r\nvar showedLongitudeMeridianWarning = false;\r\n\/\/console.log(&quot;\u8c03\u8bd5&quot;);\r\n\/\/ \u68c0\u67e5\u8f93\u5165\u529f\u80fd\/\/\r\nfunction CheckInputs () {\r\n\r\nvar error = false;\r\n\r\nvar error_message = &quot;\u6ce8\u610f\uff01\u4e0b\u9762\u7684\u8f93\u5165\u5fc5\u987b\u4e88\u4ee5\u7ea0\u6b63\uff0c\u624d\u53ef\u4ee5\u8ba1\u7b97\u51fa\u592a\u9633\u7684\u89d2\u5ea6:\\n\\n&quot;;\r\n\r\nvar f = document.theForm;\r\n\r\nvar inputLatitude = f.inputLatitude.value;\r\nvar inputLongitude = f.inputLongitude.value;\r\nvar inputTime = f.inputTime.value;\r\nvar inputElevation = f.inputElevation.value;\r\n\r\n\/\/\u7eac\u5ea6\r\n\r\nvar latitudeOkay = false;\r\n\r\nif (inputLatitude.search (&quot;^&#x5B;0-9]+&#x5B;dD]&#x5B;0-9]+&#x5B;mM]&#x5B;0-9]+&#x5B;sS]$&quot;) &gt; -1) { latitudeOkay = true; }\r\n\r\nelse { if ((inputLatitude &gt;= 0 ) &amp;&amp; (inputLatitude &lt;= 90)) { latitudeOkay = true; } }\r\n\r\nif (! latitudeOkay) {\r\n\r\nerror_message = error_message + &quot;* T\u7eac\u5ea6\u5fc5\u987b\u4ecb\u4e8e0\u523090\u5ea6\u4e4b\u95f4\\n&quot;;\r\n\r\nerror = true;\r\n}\r\n\r\n\/\/ \u7ecf\u5ea6\r\n\r\nvar longitudeOkay = false;\r\n\r\nif (inputLongitude.search (&quot;^&#x5B;0-9]+&#x5B;dD]&#x5B;0-9]+&#x5B;mM]&#x5B;0-9]+&#x5B;sS]$&quot;) &gt; -1) { longitudeOkay = true; }\r\n\r\nelse { if ((inputLongitude &gt;= 0 ) &amp;&amp; (inputLongitude &lt;= 360)) { longitudeOkay = true; } }\r\n\r\nif (! longitudeOkay) {\r\n\r\nerror_message = error_message + &quot;* \u7ecf\u5ea6\u5fc5\u987b\u4ecb\u4e8e0\u5230360\u5ea6\u4e4b\u95f4\\n&quot;;\r\n\r\nerror = true;\r\n}\r\n\r\n\/\/\u6d77\u62d4\r\n\r\nif ((inputElevation != '') &amp;&amp; (inputElevation.search (&quot;&#x5B;^0-9]&quot;) &gt; -1)) {\r\n\r\nerror_message = error_message + &quot;* \u9ad8\u7a0b\u4ec5\u5305\u542b\u6570\u5b57\\n&quot;;\r\n\r\nerror = true;\r\n}\r\n\r\n\/\/ \u65f6\u95f4\r\n\r\nif ((inputTime != '') &amp;&amp; (inputTime.search (&quot;^&#x5B;0-9]+:?&#x5B;0-9]&#x5B;0-9]$&quot;) &lt; 0)) {\r\n\r\nerror_message = error_message + &quot;* \u65f6\u95f4\u5fc5\u987b\u662fXX:XX\u6216XXXX\u683c\u5f0f,\u598212\u70b910\u5206\uff0c\u586b12:10\u62161210 \\n&quot;;\r\n\r\nerror = true;\r\n}\r\n\r\n\/\/\u8b66\u62a5\/\u8fd4\u56de\r\n\r\nif (error == true) { alert (error_message); }\r\n\r\nreturn (! error);\r\n}\r\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n\/\/ \u4e3b\u51fd\u6570\u8ba1\u7b97\/\/\r\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n\r\nfunction compute () {\r\n\r\nif (CheckInputs ()) {\r\n\r\nvar f = document.theForm;\r\n\r\n\/\/\u5e38\u91cf\r\n\r\nvar degreesToRadians = 3.1416 \/ 180.0000;\r\nvar radiansToDegrees = 180.0000 \/ 3.1416;\r\nvar degreeMinutesToDecimal = 1.0000 \/ 60.0000;\r\nvar degreeSecondsToDecimal = 1.0000 \/ 3600.0000;\r\n\r\n\/\/ \u68c0\u7d22\u8f93\u5165\u7684\u503c\r\n\r\nvar inputLongitude = f.inputLongitude.value;\r\nvar inputEastWest = f.inputEastWest.options&#x5B;f.inputEastWest.selectedIndex].text;\r\nvar inputLatitude = f.inputLatitude.value;\r\nvar inputNorthSouth = f.inputNorthSouth.options&#x5B;f.inputNorthSouth.selectedIndex].text;\r\nvar inputElevation = f.inputElevation.value;\r\n\/\/var inputFeetMeters = f.inputFeetMeters.options&#x5B;f.inputFeetMeters.selectedIndex].text;\r\nvar inputMonth = f.inputMonth.options&#x5B;f.inputMonth.selectedIndex].text;\r\nvar inputDate = f.inputDate.options&#x5B;f.inputDate.selectedIndex].text - 0;\r\nvar inputYear = f.inputYear.options&#x5B;f.inputYear.selectedIndex].text - 0;\r\nvar inputTime = f.inputTime.value;\r\nvar inputAMPM = f.inputAMPM.options&#x5B;f.inputAMPM.selectedIndex].text;\r\nvar inputTimeFormat = f.inputTimeFormat.options&#x5B;f.inputTimeFormat.selectedIndex].text;\r\nvar inputTimeZone = f.inputTimeZone.options&#x5B;f.inputTimeZone.selectedIndex].value - 0;\r\nvar inputZeroAzimuth = f.inputZeroAzimuth.options&#x5B;f.inputZeroAzimuth.selectedIndex].value - 0;\r\nif (inputLongitude.indexOf(&quot;d&quot;) != -1) {\r\n\r\ndegMarker = inputLongitude.indexOf(&quot;d&quot;);\r\nminMarker = inputLongitude.indexOf(&quot;m&quot;);\r\nsecMarker = inputLongitude.indexOf(&quot;s&quot;);\r\n\r\nlongitudeDeg = inputLongitude.substr(0,degMarker) - 0;\r\nlongitudeMin = inputLongitude.substr(degMarker+1,minMarker-degMarker-1) - 0;\r\nlongitudeSec = inputLongitude.substr(minMarker+1,secMarker-minMarker-1) - 0;\r\n\r\ninputLongitude = longitudeDeg + (longitudeMin * degreeMinutesToDecimal) + (longitudeSec * degreeSecondsToDecimal);\r\n}\r\nelse { inputLongitude -= 0; }\r\n\r\nif (inputLatitude.indexOf(&quot;d&quot;) != -1) {\r\n\r\ndegMarker = inputLatitude.indexOf(&quot;d&quot;);\r\nminMarker = inputLatitude.indexOf(&quot;m&quot;);\r\nsecMarker = inputLatitude.indexOf(&quot;s&quot;);\r\n\r\nLatitudeDeg = inputLatitude.substr(0,degMarker) - 0;\r\nLatitudeMin = inputLatitude.substr(degMarker+1,minMarker-degMarker-1) - 0;\r\nLatitudeSec = inputLatitude.substr(minMarker+1,secMarker-minMarker-1) - 0;\r\n\r\ninputLatitude = LatitudeDeg + (LatitudeMin * degreeMinutesToDecimal) + (LatitudeSec * degreeSecondsToDecimal);\r\n}\r\nelse { inputLatitude -= 0; }\r\n\r\n\/\/\u68c0\u67e5\u8f93\u5165\u503c\u7684\u6709\u6548\u6027\r\n\r\nvar validInputTime = true;\r\n\r\n\/\/ \u907f\u514d\u7531\u4e8e\u7eac\u5ea6\u6216\u7ecf\u5ea6\u6570\u5b66\u9519\u8bef = 0\r\n\r\nif ((inputLatitude == 0) &amp;&amp; (f.inputLatitude.value.length &gt; 0)) { inputLatitude = 0.000000001; }\r\nif ((inputLongitude == 0) &amp;&amp; (f.inputLongitude.value.length &gt; 0)) { inputLongitude = 0.000000001; }\r\n\r\n\/\/\u68c0\u67e5\u8f93\u5165\u7684\u5b57\u6bb5\u90fd\u7531\u7528\u6237\u586b\u5199\r\n\r\nvar timeEntered = (inputTime != &quot;&quot;);\/\/\u65f6\u95f4\u586b\u5165\r\nvar latitudeEntered = (inputLatitude != &quot;&quot;);\/\/\u7ecf\u7eac\u5ea6\u586b\u5165\r\nvar longitudeEntered = (inputLongitude != &quot;&quot;);\r\n\r\n\/\/ \u5c06\u8f93\u5165\u7684\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u6570\u5b57\r\n\r\ninputLatitude = inputLatitude - 0;\r\ninputLongitude = inputLongitude - 0;\r\ninputElevation = inputElevation - 0;\r\n\r\n\/\/ \u786e\u5b9a\u65f6\u95f4\u683c\u5f0f\r\nvar clockTimeInputMode = (inputTimeFormat == &quot;\u65f6\u949f\u65f6\u95f4&quot;);\r\nvar lsotInputMode = (inputTimeFormat == &quot;\u592a\u9633\u65f6&quot;);\r\n\/\/console.log(lsotInputMode);\r\n\r\n\/\/\r\n\r\nvar doableDeclination = true;\r\nvar doableEOT = true;\r\nvar doableClockTime = ((longitudeEntered || clockTimeInputMode) &amp;&amp; timeEntered);\r\nvar doableLSOT = ((longitudeEntered || lsotInputMode) &amp;&amp; timeEntered);\r\nvar doableHourAngle = (longitudeEntered &amp;&amp; timeEntered);\r\nvar doableSunRiseSet = (longitudeEntered &amp;&amp; latitudeEntered);\r\nvar doableAltitude = (longitudeEntered &amp;&amp; timeEntered &amp;&amp; latitudeEntered);\r\nvar doableAzimuth = (longitudeEntered &amp;&amp; timeEntered &amp;&amp; latitudeEntered);\r\n\/\/ \/\/\/\/\/\/\/\/\/\/\/\/ \/\/\r\n\/\/\u8ba1\u7b97\/\/\r\n\/\/ \/\/\/\/\/\/\/\/\/\/\/\/ \/\/\r\n\r\n\/\/ \u8f6c\u6362\u5355\u4f4d\r\n\r\n\/\/ \u7ecf\u5ea6\u4e1c-\u897f\u8c03\u6574\r\n\r\nif (longitudeEntered) {\r\nvar signedLongitude = inputLongitude;\r\nif (inputEastWest == &quot;East&quot;) signedLongitude *= -1; \/\/ &#x5B;1] = \u4e1c, &#x5B;0] = \u897f\r\n}\r\n\r\n\/\/ \u7eac\u5ea6\u5357\u5317\u8c03\u6574\r\n\r\nif (latitudeEntered) {\r\nvar signedLatitude = inputLatitude;\r\nif (inputNorthSouth == &quot;South&quot;) signedLatitude *= -1; \/\/ &#x5B;0] = \u5317, &#x5B;1] = \u5357\r\n}\r\n\r\n\/\/ \u4fee\u590d\u7ecf\u5ea6 &gt; 180 deg\r\n\r\nif (signedLongitude &gt; 180) {\r\n\r\nsignedLongitude = signedLongitude - 360;\r\n}\r\n\r\n\/\/ \u4fee\u590d\u7ecf\u5ea6&lt; -180 deg\r\n\r\nif (signedLongitude &lt; -180) {\r\n\r\nsignedLongitude = signedLongitude + 360;\r\n}\r\n\r\n\/\/\u8bbe\u7f6e\u4e3a\u96f6\u7684\u65b9\u4f4d\r\n\r\nzeroAzimuth = inputZeroAzimuth;\r\n\r\n\/\/ \u5f53\u5730\u6807\u51c6\u65f6\u95f4\u5b50\u5348\u7ebf\r\n\r\nvar meridian = inputTimeZone * -15;\r\n\r\n\/\/ \u5982\u679c\u592a\u591a\u4e0e\u65f6\u533a\u7ecf\u5ea6\u4e0d\u540c\u7684\u8b66\u62a5\r\n\r\nvar longitudeMeridianDifference = signedLongitude - meridian;\r\n\r\nif ((! showedLongitudeMeridianWarning) &amp;&amp; ((longitudeMeridianDifference &gt; 30) || (longitudeMeridianDifference &lt; -30))) {\r\n\r\nalert (&quot;\u8b66\u544a: \u7ecf\u5ea6\u4ece\u9009\u5b9a\u7684\u65f6\u533a\u4e2d\u5fc3\u76f8\u5dee\u8d85\u8fc730\u5ea6. \u8fd9\u53ef\u80fd\u662f\u6b63\u786e\u7684, \u6216\u8005\u5b83\u53ef\u80fd\u8868\u660e\uff0c\u5176\u4e2d\u4e00\u4e2a\u8f93\u5165\u662f\u4e0d\u6b63\u786e\u7684.\\n\\n\u8bf7\u70b9\u51fb '\u65f6\u533a' \u8f93\u5165\u7684\u8be6\u7ec6\u4fe1\u606f.\\n\\n(\u4e0d\u4f1a\u518d\u6b21\u663e\u793a\u8fd9\u4e2a\u8b66\u544a.)&quot;);\r\n\r\nshowedLongitudeMeridianWarning = true;\r\n}\r\n\r\n\/\/ \u8ba1\u7b97\u65f6\u95f4\r\n\r\n\/\/ \u8f6c\u6362\u65f6\u95f4\u8f93\u5165\u5348\u540e\u5c0f\u65f6\r\n\r\nif (validInputTime) {\r\n\r\n\/\/ ...\u5982\u679c\u6709\u5fc5\u8981\u4ece\u65f6\u95f4\u5b57\u7b26\u4e32\u5220\u9664\u5206\u53f7\r\n\r\ninputTime = RemoveSemicolon (inputTime);\r\n\r\n\/\/ ...\u89e3\u6790\u65f6\u95f4\u8f93\u5165\u7684\u5b57\u7b26\u4e32\u5e76\u5f97\u5230\u5c0f\u65f6\u548c\u5206\u949f\r\n\r\nif (inputTime.length == 4) { \/\/ \u5982 &quot;1234&quot;\r\ntimeHours = inputTime.substring(0,2) - 0;\r\ntimeMinutes = inputTime.substring(2,4) - 0;\r\n}\r\nelse { \/\/ \u5982 &quot;123&quot;\r\ntimeHours = inputTime.substring(0,1) - 0;\r\ntimeMinutes = inputTime.substring(1,3) - 0;\r\n}\r\n\r\n\/\/ ...\u8c03\u6574\u4e3a AM\/PM \u540d\u79f0\r\n\r\nif ((inputAMPM == &quot;AM&quot;) &amp;&amp; (timeHours == 12)) timeHours = 0;\r\nif (inputAMPM == &quot;PM&quot;) { if (timeHours != 12) timeHours += 12; }\r\n\r\n\/\/ ...\u8ba1\u7b97\u540e\u5348\u591c\u7684\u65f6\u949f\u5206\u949f\r\n\r\nvar inputHoursAfterMidnight = timeHours + timeMinutes \/ 60.0;\r\nvar inputMinutesAfterMidnight = timeHours * 60.0 + timeMinutes;\r\n}\r\n\r\n\/\/ \u8ba1\u7b97\u901a\u7528\u65f6\u95f4\r\n\r\nvar UT = 0.0;\r\n\r\nif (validInputTime) { UT = inputHoursAfterMidnight - inputTimeZone; }\r\n\r\nvar monthNum = (MonthStringToMonthNum (inputMonth)) - 0;\r\n\r\nif (monthNum &gt; 2) {\r\ncorrectedYear = inputYear;\r\ncorrectedMonth = monthNum - 3;\r\n}\r\nelse {\r\ncorrectedYear = inputYear - 1;\r\ncorrectedMonth = monthNum + 9;\r\n}\r\n\r\nvar t = ((UT \/ 24.0) + inputDate + Math.floor (30.6 * correctedMonth + 0.5) + Math.floor (365.25 * (correctedYear - 1976)) - 8707.5) \/ 36525.0;\r\n\r\nvar G = 357.528 + 35999.05 * t;\r\nG = NormalizeTo360 (G);\r\n\r\nvar C = (1.915 * Math.sin (G * degreesToRadians)) + (0.020 * Math.sin (2.0 * G * degreesToRadians));\r\n\r\nvar L = 280.460 + (36000.770 * t) + C;\r\nL = NormalizeTo360 (L);\r\n\r\nvar alpha = L - 2.466 * Math.sin (2.0 * L * degreesToRadians) + 0.053 * Math.sin (4.0 * L * degreesToRadians);\r\n\r\nvar GHA = UT * 15 - 180 - C + L - alpha;\r\nGHA = NormalizeTo360 (GHA);\r\n\r\nvar obliquity = 23.4393 - 0.013 * t;\r\n\r\nvar declination = Math.atan (Math.tan (obliquity * degreesToRadians) * Math.sin (alpha * degreesToRadians)) * radiansToDegrees;\r\n\r\nf.outputDeclination.value = FormatFloatString (declination);\r\n\r\nvar eotAdjustment = (L - C - alpha) \/ 15.0;\r\n\r\nf.outputEOT.value = FormatFloatString (eotAdjustment);\r\n\r\nif (doableLSOT || doableClockTime) {\r\n\r\nvar clockTimeToLSOTAdjustment = ((signedLongitude - meridian) \/ 15.0) - eotAdjustment; \/\/ \u4ee5\u5c0f\u65f6\u4e3a\u5355\u4f4d\r\n}\r\n\r\nvar solarHourAngle = 0;\r\n\r\nif (clockTimeInputMode) { solarHourAngle = GHA - signedLongitude; }\r\n\r\nelse { solarHourAngle = 15 * (inputHoursAfterMidnight - 12); }\r\n\r\nsolarHourAngle = NormalizeTo180 (solarHourAngle);\r\n\r\nvar apparentSolarTime = 0;\r\n\r\nif (clockTimeInputMode) { apparentSolarTime = NormalizeTo24 (12 + solarHourAngle \/ 15.0); }\r\n\r\nelse { apparentSolarTime = inputHoursAfterMidnight; }\r\n\r\nif (doableLSOT) {\r\n\r\nif (clockTimeInputMode) {\r\n\r\nsolarMinutesAfterMidnight = inputMinutesAfterMidnight - (clockTimeToLSOTAdjustment * 60.0);\r\n\r\nvar whichDay = 0;\r\n\r\nif (solarMinutesAfterMidnight &lt; 0) {\r\nsolarMinutesAfterMidnight += 24 * 60;\r\nwhichDay = -1;\r\n}\r\n\r\nif (solarMinutesAfterMidnight &gt;= 24 * 60) {\r\nsolarMinutesAfterMidnight -= 24 * 60;\r\nwhichDay = 1;\r\n}\r\n}\r\n\r\nelse {\r\n\r\nsolarMinutesAfterMidnight = inputMinutesAfterMidnight;\r\n\r\nwhichDay = 0;\r\n}\r\n\/\/console.log(inputAMPM);\r\nsolarTime = MinutesToClockTime (solarMinutesAfterMidnight, inputAMPM);\r\n\r\nif (whichDay == &quot;-1&quot;) f.outputLSOT.value = solarTime + &quot;-&quot;;\r\nif (whichDay == &quot;0&quot;) f.outputLSOT.value = solarTime ;\r\nif (whichDay == &quot;1&quot;) f.outputLSOT.value = solarTime + &quot;+&quot;;\r\n}\r\n\r\nelse { f.outputLSOT.value = &quot;&quot;; }\r\n\r\nif (doableClockTime) {\r\n\r\nvar clockMinutesAfterMidnight = inputMinutesAfterMidnight;\r\n\r\nif (lsotInputMode) { clockMinutesAfterMidnight = inputMinutesAfterMidnight + (clockTimeToLSOTAdjustment * 60.0); }\r\n\r\nvar whichDay = 0;\r\n\r\nif (clockMinutesAfterMidnight &lt; 0) {\r\nclockMinutesAfterMidnight += 24 * 60;\r\nwhichDay = -1;\r\n}\r\n\r\nif (clockMinutesAfterMidnight &gt;= 24 * 60) {\r\nclockMinutesAfterMidnight -= 24 * 60;\r\nwhichDay = 1;\r\n}\r\n\r\nclockTime = MinutesToClockTime (clockMinutesAfterMidnight, inputAMPM);\r\n\r\nif (whichDay == &quot;-1&quot;) f.outputClockTime.value = clockTime + &quot;-&quot;;\r\nif (whichDay == &quot;0&quot;) f.outputClockTime.value = clockTime ;\r\nif (whichDay == &quot;1&quot;) f.outputClockTime.value = clockTime + &quot;+&quot;;\r\n}\r\n\r\nelse { f.outputClockTime.value = &quot;&quot;; }\r\n\r\n\/\/ \u5c0f\u65f6\u89d2\r\n\r\n\/\/ \u4e0d\u540c\u4e4b\u95f4 180 \u548c + 180 \u5ea6\r\n\r\nif (doableHourAngle) {\r\n\r\nvar hourAngle = (solarMinutesAfterMidnight - (12 * 60)) \/ 4;\r\n\r\nf.outputHourAngle.value = FormatFloatString (hourAngle);\r\n}\r\n\r\nelse { f.outputHourAngle.value = &quot;&quot;; }\r\n\r\n\/\/\u5730\u5e73\u9ad8\u5ea6\u89d2\r\n\r\nif (doableAltitude) {\r\n\r\nvar altitudeAngle = radiansToDegrees * ArcSin (\r\n(Math.sin (signedLatitude * degreesToRadians) *\r\nMath.sin (declination * degreesToRadians)) -\r\n(Math.cos (signedLatitude * degreesToRadians) *\r\nMath.cos (declination * degreesToRadians) *\r\nMath.cos ((solarHourAngle + 180) * degreesToRadians)));\r\n\r\nf.outputAltitude.value = FormatFloatString (altitudeAngle);\r\n}\r\n\r\nelse { f.outputAltitude.value = &quot;&quot;; }\r\n\r\n\/\/ \u65b9\u4f4d\u89d2\r\n\r\nif (doableAzimuth) {\r\n\r\nvar preAzimuthAngle = radiansToDegrees * ArcCos (\r\n(Math.cos (declination * degreesToRadians) *\r\n((Math.cos (signedLatitude * degreesToRadians) *\r\nMath.tan (declination * degreesToRadians)) +\r\n(Math.sin (signedLatitude * degreesToRadians) *\r\nMath.cos ((solarHourAngle + 180) * degreesToRadians)))) \/\r\nMath.cos (altitudeAngle * degreesToRadians));\r\n\r\nazimuthAngle = preAzimuthAngle + (zeroAzimuth - 180.0);\r\n\r\n\/\/ \u65b9\u4f4d\u89d2\u7684\u6b63\u786e\u6807\u5fd7\r\nif (zeroAzimuth == 0) {\r\n\r\nazimuthAngle = ChangeSign (azimuthAngle, &quot;same&quot;, hourAngle);\r\n}\r\n\r\n\/\/\u5317\u96f6\u65b9\u4f4d\r\n\r\nelse {\r\n\r\nazimuthAngle = ChangeSign (azimuthAngle, &quot;opposite&quot;, hourAngle);\r\n}\r\n\r\nf.outputAzimuth.value = FormatFloatString (azimuthAngle);\r\n}\r\n\r\nelse { f.outputAzimuth.value = &quot;&quot;; }\r\n\r\n\/\/ \u65f6\u949f\u65f6\u95f4\u7684\u65e5\u51fa\u4e0e\u65e5\u843d\r\n\r\nif (doableSunRiseSet) {\r\nvar sunRiseSetLSoTMinutes = radiansToDegrees * ArcCos ( -1.0 *\r\n(Math.sin (signedLatitude * degreesToRadians) *\r\nMath.sin (declination * degreesToRadians) -\r\nMath.sin ((-0.8333 - 0.0347 * Math.sqrt (inputElevation)) * degreesToRadians)) \/\r\nMath.cos (signedLatitude * degreesToRadians) \/\r\nMath.cos (declination * degreesToRadians)) * 4;\r\n\/\/\u65e5\u51fa\u65f6\u95f4\r\nf.outputSunrise.value = MinutesToClockTime ((12 * 60 - sunRiseSetLSoTMinutes + (clockTimeToLSOTAdjustment * 60)), inputAMPM);\r\n\/\/\u65e5\u843d\u65f6\u95f4\r\nf.outputSunset.value = MinutesToClockTime ((12 * 60 + sunRiseSetLSoTMinutes + (clockTimeToLSOTAdjustment * 60)), inputAMPM);\r\n}\r\nelse {\r\nf.outputSunrise.value = &quot;&quot;;\r\nf.outputSunset.value = &quot;&quot;;\r\n}\r\n}\r\n\r\n\/\/ \u96f6\u51fa\u5f62\u5f0f\u8f93\u51fa\uff0c\u662f\u5426\u8f93\u5165\u4e86\u65e0\u6548\r\n\r\nelse {\r\n\r\nvar f = document.theForm;\r\n\r\nf.outputAltitude.value = '';\r\nf.outputAzimuth.value = '';\r\nf.outputDeclination.value = '';\r\nf.outputEOT.value = '';\r\nf.outputClockTime.value = '';\r\nf.outputSunrise.value = '';\r\nf.outputSunset.value = '';\r\nf.outputLSOT.value = '';\r\nf.outputHourAngle.value = '';\r\n}\r\n\r\n}\r\n\/\/ \u5176\u4ed6\u529f\u80fd\r\n\r\nfunction ChangeSign (input, mode, basis) {\r\n\r\nif (mode == &quot;same&quot;) {\r\n\r\nif ((input * basis) &lt; 0) {\r\n\r\ninput *= -1;\r\n}\r\n}\r\n\r\nelse {\r\n\r\nif ((input * basis) &gt; 0) {\r\n\r\ninput *= -1;\r\n}\r\n}\r\n\r\nreturn input;\r\n}\r\nfunction NoEnter () {\r\n\r\nreturn !(window.event &amp;&amp; window.event.keyCode == 13);\r\n}\r\n\r\nfunction ArcSin (theThing) {\r\n\r\nreturn (Math.asin (theThing));\r\n}\r\n\r\nfunction ArcCos (theThing) {\r\n\r\nreturn (Math.acos (theThing));\r\n}\r\nfunction MinutesToClockTime (totalMinutes, amPM) {\r\n\r\nvar theHours = Math.floor (totalMinutes \/ 60);\r\n\r\nvar theMinutes = Math.floor (totalMinutes % 60);\r\n\r\nif (theMinutes &lt; 10) theMinutes = &quot;0&quot; + theMinutes;\r\n\r\nif (amPM == &quot;24 hr&quot;) {\r\nif (theHours &lt; 10) theHours = &quot;0&quot; + theHours;\r\nreturnString = theHours + &quot;&quot; + theMinutes;\r\n}\r\n\r\nelse {\r\nif (theHours &lt; 12) {\r\nif (theHours == 0) theHours = 12;\r\nreturnString = theHours + &quot;:&quot; + theMinutes + &quot;AM&quot;;\r\n}\r\nelse {\r\nif (theHours == 12) theHours = 24;\r\nreturnString = (theHours - 12) + &quot;:&quot; + theMinutes + &quot;PM&quot;\r\n}\r\n}\r\n\r\nreturn (returnString);\r\n}\r\nfunction NormalizeTo360 (theThing) {\r\n\r\nreturn (theThing - Math.floor (theThing \/ 360.0) * 360);\r\n}\r\nfunction NormalizeTo180 (theThing) {\r\n\r\ntheThing = NormalizeTo360 (theThing);\r\n\r\nif (theThing &gt; 180) { theThing = theThing - 360; }\r\n\r\nreturn (theThing);\r\n}\r\nfunction NormalizeTo24 (theThing) {\r\n\r\nreturn (theThing - Math.floor (theThing \/ 24.0) * 24);\r\n}\r\nfunction MonthStringToDays (whichMonth) {\r\n\r\nif (whichMonth == &quot;1&quot;) return (0);\r\nif (whichMonth == &quot;2&quot;) return (31);\r\nif (whichMonth == &quot;3&quot;) return (59);\r\nif (whichMonth == &quot;4&quot;) return (90);\r\nif (whichMonth == &quot;5&quot;) return (120);\r\nif (whichMonth == &quot;6&quot;) return (151);\r\nif (whichMonth == &quot;7&quot;) return (181);\r\nif (whichMonth == &quot;8&quot;) return (212);\r\nif (whichMonth == &quot;9&quot;) return (243);\r\nif (whichMonth == &quot;10&quot;) return (273);\r\nif (whichMonth == &quot;11&quot;) return (304);\r\nif (whichMonth == &quot;12&quot;) return (334);\r\n\r\nreturn (&quot;Zeke the Solar Cat&quot;);\r\n}\r\nfunction MonthStringToMonthNum (whichMonth) {\r\n\r\nif (whichMonth == &quot;1&quot;) return (1);\r\nif (whichMonth == &quot;2&quot;) return (2);\r\nif (whichMonth == &quot;3&quot;) return (3);\r\nif (whichMonth == &quot;4&quot;) return (4);\r\nif (whichMonth == &quot;5&quot;) return (5);\r\nif (whichMonth == &quot;6&quot;) return (6);\r\nif (whichMonth == &quot;7&quot;) return (7);\r\nif (whichMonth == &quot;8&quot;) return (8);\r\nif (whichMonth == &quot;9&quot;) return (9);\r\nif (whichMonth == &quot;10&quot;) return (10);\r\nif (whichMonth == &quot;11&quot;) return (11);\r\nif (whichMonth == &quot;12&quot;) return (12);\r\n\r\nreturn (&quot;Zeke the Solar Cat&quot;);\r\n}\r\n\r\nfunction RemoveSemicolon (inputString) {\r\n\r\nif (inputString.substring (1,2) == &quot;:&quot;) {\r\nreturn (inputString.substring(0,1) + inputString.substring(2,4));\r\n}\r\n\r\nif (inputString.substring (2,3) == &quot;:&quot;) {\r\nreturn (inputString.substring(0,2) + inputString.substring(3,5));\r\n}\r\n\r\nreturn (inputString);\r\n}\r\n\r\nfunction FormatFloatString (theInput) {\r\n\r\nvar negativeNumber = false;\r\nif (theInput &lt; 0) {\r\nnegativeNumber = true;\r\ntheInput *= -1;\r\n}\r\n\r\nintegerPortion = Math.floor (theInput);\r\ndecimalPortion = Math.round (theInput * 100) % 100;\r\n\r\n\/\/\u6dfb\u52a0 7\/17\/99\/17\/99 \u7ea0\u6b63 0.999 \u88ab\u820d\u5165\u4e3a 0.000 \u5341\u8fdb\u5236\u8f6c\u6362\u4e2d\u7684\u95ee\u9898 \ufe30\r\nif ((decimalPortion == 0) &amp;&amp; ((theInput - integerPortion) &gt; 0.5)) {\r\nintegerPortion += 1;\r\n}\r\n\r\nif (integerPortion &lt; 10) integerPortionString = &quot; &quot; + integerPortion;\r\nelse integerPortionString = &quot;&quot; + integerPortion;\r\n\r\nif (decimalPortion &lt; 10) decimalPortionString = &quot;0&quot; + decimalPortion; \/\/ \u5982\u679c\u9700\u8981\uff0c\u6dfb\u52a0\u524d\u5bfc\u96f6\r\nelse decimalPortionString = &quot;&quot; + decimalPortion;\r\n\r\nif (negativeNumber == true) return (&quot;-&quot; + integerPortionString + &quot;.&quot; + decimalPortionString);\r\nelse return (&quot; &quot; + integerPortionString + &quot;.&quot; + decimalPortionString);\r\n}\r\n&lt;\/script&gt;\r\n&lt;\/p&gt;&lt;p&gt;&lt;b&gt;\u592a\u9633\u9ad8\u5ea6\u89d2\u5728\u7ebf\u8ba1\u7b97\u5668 &lt;\/b&gt;&lt;font color=&quot;#f4fdff&quot;&gt;\u516c\u5f0f\u8f6f\u4ef6&lt;\/font&gt;&lt;\/p&gt;\r\n&lt;table class=&quot;nopad&quot; width=&quot;438&quot;&gt;\r\n&lt;tbody&gt;\r\n&lt;tr valign=&quot;top&quot;&gt;\r\n&lt;td&gt;\r\n&lt;table class=&quot;contentpaneopen&quot; width=&quot;60%&quot; height=&quot;548&quot;&gt;\r\n&lt;tbody&gt;\r\n&lt;tr&gt;\r\n&lt;td height=&quot;390&quot; valign=&quot;top&quot; width=&quot;446&quot;&gt;\r\n&lt;form action=&quot;javascript:compute();&quot; name=&quot;theForm&quot;&gt;\r\n&lt;table border=&quot;1&quot; cellpadding=&quot;2&quot; width=&quot;430&quot;&gt;\r\n&lt;!-- ------ --&gt;&lt;!-- INPUTS --&gt;&lt;!-- ------ --&gt;\r\n&lt;tbody&gt;\r\n&lt;tr&gt;\r\n&lt;td class=&quot;tableHeaderBar&quot; bgcolor=&quot;#d7ffff&quot; colspan=&quot;5&quot;&gt;\r\n&lt;p align=&quot;center&quot;&gt;\u3000East\u4e1c West\u897f North\u5317 South\u5357&lt;\/p&gt;\r\n&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr valign=&quot;middle&quot;&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; valign=&quot;middle&quot; width=&quot;56&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u7ecf\u5ea6&lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; valign=&quot;middle&quot; width=&quot;51&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;10&quot; size=&quot;6&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;inputLongitude&quot; type=&quot;text&quot; value=&quot;114.4&quot;&gt;&lt;font size=&quot;2&quot;&gt; &lt;\/font&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; valign=&quot;middle&quot; width=&quot;61&quot; align=&quot;left&quot;&gt;&lt;select name=&quot;inputEastWest&quot;&gt;\r\n&lt;option selected=&quot;selected&quot;&gt;East&lt;\/option&gt;\r\n&lt;option&gt;West&lt;\/option&gt;\r\n&lt;\/select&gt;&lt;font size=&quot;2&quot;&gt; &lt;\/font&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;84&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u9009\u62e9\u65f6\u95f4\u5236\u5f0f&lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td align=&quot;left&quot;&gt;&lt;input maxlength=&quot;5&quot; size=&quot;5&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;inputTime&quot; value=&quot;12:00&quot; type=&quot;text&quot;&gt; &lt;select name=&quot;inputAMPM&quot;&gt;\r\n&lt;option&gt;AM&lt;\/option&gt;\r\n&lt;option&gt;PM&lt;\/option&gt;\r\n&lt;option selected=&quot;selected&quot;&gt;24 hr&lt;\/option&gt;\r\n&lt;\/select&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr valign=&quot;middle&quot;&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;56&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u7eac\u5ea6&lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;51&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;10&quot; size=&quot;6&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;inputLatitude&quot; value=&quot;36.9&quot; type=&quot;text&quot;&gt;&lt;font size=&quot;2&quot;&gt; &lt;\/font&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;61&quot; align=&quot;left&quot;&gt;&lt;select name=&quot;inputNorthSouth&quot;&gt;\r\n&lt;option selected=&quot;selected&quot;&gt;North&lt;\/option&gt;\r\n&lt;option&gt;South&lt;\/option&gt;\r\n&lt;\/select&gt;&lt;font size=&quot;2&quot;&gt; &lt;\/font&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;84&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u9009\u62e9\u65f6\u533a &lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;134&quot; align=&quot;left&quot;&gt;&lt;select size=&quot;1&quot; name=&quot;inputTimeZone&quot;&gt;\r\n&lt;option value=&quot;0&quot;&gt;Z (GMT)&lt;\/option&gt;\r\n&lt;option value=&quot;1&quot;&gt;A (GMT + 1:00)&lt;\/option&gt;\r\n&lt;option value=&quot;2&quot;&gt;B (GMT + 2:00)&lt;\/option&gt;\r\n&lt;option value=&quot;3&quot;&gt;C (GMT + 3:00)&lt;\/option&gt;\r\n&lt;option value=&quot;3.5&quot;&gt;C*(GMT + 3:30)&lt;\/option&gt;\r\n&lt;option value=&quot;4&quot;&gt;D (GMT + 4:00)&lt;\/option&gt;\r\n&lt;option value=&quot;4.5&quot;&gt;D* (GMT + 4:30)&lt;\/option&gt;\r\n&lt;option value=&quot;5&quot;&gt;E (GMT + 5:00)&lt;\/option&gt;\r\n&lt;option value=&quot;5.5&quot;&gt;E* (GMT + 5:30)&lt;\/option&gt;\r\n&lt;option value=&quot;6&quot;&gt;F (GMT + 6:00)&lt;\/option&gt;\r\n&lt;option value=&quot;6.5&quot;&gt;F* (GMT + 6:30)&lt;\/option&gt;\r\n&lt;option value=&quot;7&quot;&gt;G (GMT + 7:00)&lt;\/option&gt;\r\n&lt;option value=&quot;8&quot; selected=&quot;selected&quot;&gt;H (GMT + 8:00)&lt;\/option&gt;\r\n&lt;option value=&quot;9&quot;&gt;I (GMT + 9:00)&lt;\/option&gt;\r\n&lt;option value=&quot;9.5&quot;&gt;I* (GMT + 9:30)&lt;\/option&gt;\r\n&lt;option value=&quot;10&quot;&gt;K (GMT + 10:00)&lt;\/option&gt;\r\n&lt;option value=&quot;10.5&quot;&gt;K* (GMT + 10:30)&lt;\/option&gt;\r\n&lt;option value=&quot;11&quot;&gt;L (GMT + 11:00)&lt;\/option&gt;\r\n&lt;option value=&quot;11.5&quot;&gt;L* (GMT + 11:30)&lt;\/option&gt;\r\n&lt;option value=&quot;12&quot;&gt;M (GMT + 12:00)&lt;\/option&gt;\r\n&lt;option value=&quot;13&quot;&gt;M* (GMT + 13:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-1&quot;&gt;N (GMT - 1:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-2&quot;&gt;O (GMT - 2:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-3&quot;&gt;P (GMT - 3:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-3.5&quot;&gt;P* (GMT - 3:30)&lt;\/option&gt;\r\n&lt;option value=&quot;-4&quot;&gt;Q (GMT - 4:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-5&quot;&gt;R (GMT - 5:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-6&quot;&gt;S (GMT - 6:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-7&quot;&gt;T (GMT - 7:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-8&quot;&gt;U (GMT - 8:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-8.5&quot;&gt;U* (GMT - 8:30)&lt;\/option&gt;\r\n&lt;option value=&quot;-9&quot;&gt;V (GMT - 9:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-9.5&quot;&gt;V* (GMT - 9:30)&lt;\/option&gt;\r\n&lt;option value=&quot;-10&quot;&gt;W (GMT - 10:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-11&quot;&gt;X (GMT - 11:00)&lt;\/option&gt;\r\n&lt;option value=&quot;-12&quot;&gt;Y (GMT - 12:00)&lt;\/option&gt;\r\n&lt;\/select&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr valign=&quot;middle&quot;&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;56&quot; align=&quot;right&quot;&gt;&lt;font color=&quot;#ff9933&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;\u9009\u62e9\u65e5\u671f&lt;\/span&gt;&lt;\/font&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;120&quot; colspan=&quot;2&quot; align=&quot;left&quot;&gt;&lt;font color=&quot;#ff9933&quot;&gt;&lt;select name=&quot;inputMonth&quot;&gt;\r\n&lt;option selected=&quot;selected&quot;&gt;1&lt;\/option&gt;\r\n&lt;option&gt;2&lt;\/option&gt;\r\n&lt;option&gt;3&lt;\/option&gt;\r\n&lt;option&gt;4&lt;\/option&gt;\r\n&lt;option&gt;5&lt;\/option&gt;\r\n&lt;option&gt;6&lt;\/option&gt;\r\n&lt;option&gt;7&lt;\/option&gt;\r\n&lt;option&gt;8&lt;\/option&gt;\r\n&lt;option&gt;9&lt;\/option&gt;\r\n&lt;option&gt;10&lt;\/option&gt;\r\n&lt;option&gt;11&lt;\/option&gt;\r\n&lt;option&gt;12&lt;\/option&gt;\r\n&lt;\/select&gt;&lt;font size=&quot;2&quot;&gt;\u6708&amp;nbsp;&lt;\/font&gt;&lt;select name=&quot;inputDate&quot;&gt;\r\n&lt;option selected=&quot;selected&quot;&gt;1&lt;\/option&gt;\r\n&lt;option&gt;2&lt;\/option&gt;\r\n&lt;option&gt;3&lt;\/option&gt;\r\n&lt;option&gt;4&lt;\/option&gt;\r\n&lt;option&gt;5&lt;\/option&gt;\r\n&lt;option&gt;6&lt;\/option&gt;\r\n&lt;option&gt;7&lt;\/option&gt;\r\n&lt;option&gt;8&lt;\/option&gt;\r\n&lt;option&gt;9&lt;\/option&gt;\r\n&lt;option&gt;10&lt;\/option&gt;\r\n&lt;option&gt;11&lt;\/option&gt;\r\n&lt;option&gt;12&lt;\/option&gt;\r\n&lt;option&gt;13&lt;\/option&gt;\r\n&lt;option&gt;14&lt;\/option&gt;\r\n&lt;option&gt;15&lt;\/option&gt;\r\n&lt;option&gt;16&lt;\/option&gt;\r\n&lt;option&gt;17&lt;\/option&gt;\r\n&lt;option&gt;18&lt;\/option&gt;\r\n&lt;option&gt;19&lt;\/option&gt;\r\n&lt;option&gt;20&lt;\/option&gt;\r\n&lt;option&gt;21&lt;\/option&gt;\r\n&lt;option&gt;22&lt;\/option&gt;\r\n&lt;option&gt;23&lt;\/option&gt;\r\n&lt;option&gt;24&lt;\/option&gt;\r\n&lt;option&gt;25&lt;\/option&gt;\r\n&lt;option&gt;26&lt;\/option&gt;\r\n&lt;option&gt;27&lt;\/option&gt;\r\n&lt;option&gt;28&lt;\/option&gt;\r\n&lt;option&gt;29&lt;\/option&gt;\r\n&lt;option&gt;30&lt;\/option&gt;\r\n&lt;option&gt;31&lt;\/option&gt;\r\n&lt;\/select&gt;&lt;font size=&quot;2&quot;&gt;\u65e5&lt;\/font&gt;&lt;\/font&gt;&lt;font size=&quot;2&quot;&gt; &lt;\/font&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;84&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u9009\u62e9\u57fa\u51c6\u65f6\u95f4 &lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;134&quot; align=&quot;left&quot;&gt;&lt;select size=&quot;1&quot; name=&quot;inputTimeFormat&quot;&gt;\r\n&lt;option&gt;\u65f6\u949f\u65f6\u95f4&lt;\/option&gt;\r\n&lt;option selected=&quot;selected&quot;&gt;\u592a\u9633\u65f6&lt;\/option&gt;\r\n&lt;\/select&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr valign=&quot;middle&quot;&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;56&quot; align=&quot;right&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u3000&lt;\/font&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;120&quot; colspan=&quot;2&quot; align=&quot;left&quot;&gt;&lt;font color=&quot;#ff9933&quot;&gt;&lt;select name=&quot;inputYear&quot;&gt;\r\n&lt;option&gt;2015&lt;\/option&gt;\r\n&lt;option&gt;2016&lt;\/option&gt;\r\n&lt;option selected=&quot;selected&quot;&gt;2017&lt;\/option&gt;\r\n&lt;option&gt;2018&lt;\/option&gt;\r\n&lt;option&gt;2019&lt;\/option&gt;\r\n&lt;\/select&gt;&lt;\/font&gt;&lt;font color=&quot;#ff9933&quot; size=&quot;2&quot;&gt;\u5e74&lt;\/font&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;84&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt; &lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;134&quot; align=&quot;left&quot;&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr valign=&quot;middle&quot;&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;56&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u6d77\u62d4&lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;120&quot; colspan=&quot;2&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;5&quot; size=&quot;5&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;inputElevation&quot; type=&quot;text&quot;&gt;&lt;font size=&quot;2&quot;&gt; &lt;\/font&gt;\u7c73&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;84&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u96f6\u65b9\u4f4d\u89d2&lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;134&quot; align=&quot;left&quot;&gt;&lt;select size=&quot;1&quot; name=&quot;inputZeroAzimuth&quot;&gt;\r\n&lt;option value=&quot;0&quot; selected=&quot;selected&quot;&gt;\u5357&lt;\/option&gt;\r\n&lt;option value=&quot;180&quot;&gt;\u5317&lt;\/option&gt;\r\n&lt;\/select&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;!-- --------- --&gt;&lt;!-- CALCULATE --&gt;&lt;!-- --------- --&gt;\r\n&lt;tr&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;184&quot; colspan=&quot;3&quot; align=&quot;center&quot;&gt;&lt;input class=&quot;calculateButton&quot; type=&quot;submit&quot; onclick=&quot;return CheckInputs();&quot; style=&quot;background-color: #ff9933&quot; value=&quot; \u8ba1\u7b97 &quot;&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;226&quot; colspan=&quot;2&quot; align=&quot;center&quot;&gt;\r\n&lt;p align=&quot;center&quot;&gt;&lt;b&gt;&lt;\/b&gt;&lt;\/p&gt;\r\n&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;!-- ------- --&gt;&lt;!-- OUTPUTS --&gt;&lt;!-- ------- --&gt;\r\n&lt;tr&gt;\r\n&lt;td class=&quot;tableHeaderBar&quot; bgcolor=&quot;#d7ffff&quot; colspan=&quot;5&quot;&gt;&lt;span class=&quot;tableHeaderText&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u8f93\u51fa\u7ed3\u679c\uff1a&lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr valign=&quot;middle&quot;&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;56&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u592a\u9633\u9ad8\u5ea6\u89d2 &lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;120&quot; colspan=&quot;2&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;10&quot; size=&quot;10&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;outputAltitude&quot; type=&quot;text&quot;&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;84&quot; align=&quot;right&quot;&gt;&lt;font color=&quot;#ff9933&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;\u504f\u5dee&lt;\/span&gt;&lt;\/font&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;134&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;10&quot; size=&quot;10&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;outputDeclination&quot; type=&quot;text&quot;&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr valign=&quot;middle&quot;&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;56&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u592a\u9633\u65b9\u4f4d\u89d2 &lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;120&quot; colspan=&quot;2&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;10&quot; size=&quot;10&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;outputAzimuth&quot; type=&quot;text&quot;&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;84&quot; align=&quot;right&quot;&gt;&lt;font color=&quot;#ff9933&quot; size=&quot;2&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;\u65f6\u5dee&lt;\/span&gt;&lt;\/font&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;134&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;10&quot; size=&quot;10&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;outputEOT&quot; type=&quot;text&quot;&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr valign=&quot;middle&quot;&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;56&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u65f6\u949f\u65f6\u95f4&lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;120&quot; colspan=&quot;2&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;10&quot; size=&quot;10&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;outputClockTime&quot; type=&quot;text&quot;&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;84&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u65e5\u51fa\u65f6\u95f4&lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;134&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;10&quot; size=&quot;10&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;outputSunrise&quot; type=&quot;text&quot;&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr valign=&quot;middle&quot;&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;56&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u592a\u9633\u65f6 &lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;120&quot; colspan=&quot;2&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;10&quot; size=&quot;10&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;outputLSOT&quot; type=&quot;text&quot;&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;84&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u65e5\u843d\u65f6\u95f4&lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;134&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;10&quot; size=&quot;10&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;outputSunset&quot; type=&quot;text&quot;&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr valign=&quot;middle&quot;&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;56&quot; align=&quot;right&quot;&gt;&lt;span class=&quot;dataLabel&quot;&gt;&lt;font size=&quot;2&quot;&gt;\u65f6\u89d2 &lt;\/font&gt;&lt;\/span&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;120&quot; colspan=&quot;2&quot; align=&quot;left&quot;&gt;&lt;input maxlength=&quot;10&quot; size=&quot;10&quot; onkeypress=&quot;return NoEnter()&quot; name=&quot;outputHourAngle&quot; type=&quot;text&quot;&gt;&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;84&quot; align=&quot;right&quot;&gt;\u3000&lt;\/td&gt;\r\n&lt;td bgcolor=&quot;#d7ffff&quot; width=&quot;134&quot; align=&quot;left&quot;&gt;20170202\u4fee\u6539&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;\/tbody&gt;\r\n&lt;\/table&gt;\r\n&lt;\/form&gt;\r\n&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr&gt;\r\n&lt;\/tr&gt;\r\n&lt;tr&gt;\r\n&lt;\/tr&gt;\r\n&lt;\/tbody&gt;\r\n&lt;\/table&gt;\r\n&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;\/tbody&gt;\r\n&lt;\/table&gt;\r\n&lt;\/body&gt;&lt;\/html&gt;\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>&lt;!DOCTYPE html PUBLIC &quot;-\/\/W3C\/\/D &hellip; <a href=\"http:\/\/www.luwl.net\/?p=858\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-858","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/posts\/858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.luwl.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=858"}],"version-history":[{"count":2,"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/posts\/858\/revisions"}],"predecessor-version":[{"id":860,"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/posts\/858\/revisions\/860"}],"wp:attachment":[{"href":"http:\/\/www.luwl.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.luwl.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=858"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.luwl.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}