Это мой текущий код:Пытаясь вычислить восход ... не получает правильный ответ
public class Sunpos {
final private double Pi = Math.PI;
final private double eul = 2.71828182845904523552 ;
final private double sonauf = 90;
final private double RAD = 0.017453292519943295769236907684886;
public double sunrisefinal (double Breitengrad, double Laengengrad, int tagzahl, int sommerzeit, int nacht) {
double lngHour = Laengengrad/15;
double t = tagzahl + ((6 - lngHour)/24);
// double ab = tagzahl + ((18 - lngHour)/24);
double M = (0.9856 * t) - 3.289;
double L = M + (1.916 * Math.sin(M)) + (0.020 * Math.sin(2 * M)) + 282.634;
if (L >= 359) { L -= 360; }
else if (L < 0) { L += 360; }
double RA = (Math.atan(0.91764 * Math.tan(Pi/180)*L));
if (RA >= 359) { RA -= 360; }
else if (RA < 0) { RA += 360; }
double Lquadrant = (Math.floor(L/90)*90);
double RAquadrant = (Math.floor(RA/90))*90;
RA = RA + (Lquadrant - RAquadrant);
RA = RA/15;
double sinDec = 0.39782 * Math.sin((Pi/180)*L);
double cosDec = (180/Pi)*(Math.cos(Math.asin(sinDec)));
double cosH = (Math.cos((Pi/180)*sonauf)-(sinDec*Math.sin((Pi/180)*Breitengrad)))/(cosDec * Math.cos((Pi/180)*Breitengrad));
double H = 360 - Math.acos(cosH);
H /= 15;
double T = H + RA -(0.06571 * t) - 6.622;
double UTC = T - lngHour;
if (UTC >= 23) { UTC -= 24; }
else if (UTC < 0) { UTC += 24; }
double locTime = UTC; // Fuer die schweiz!
System.out.println(locTime);
return(0);
}
Входы являются следующие: (50, 10, 294, 1, 0). Последние 2 могут быть проигнорированы.
Сейчас я основывая это на следующей странице: http://williams.best.vwh.net/sunrise_sunset_algorithm.htm
Код должен быть завершен в соответствии с сайта, но я не получаю какой-либо предполагаемых результатов. На сегодня мне нужно 7,5, но я получаю 9.358.
Теперь это может быть из-за чего-то с радиантами/градусами? Я не могу вникать в этот ум, поскольку я пытался вставить эти конвертеры (Pi/180) в код без какого-либо полезного результата.
Может ли кто-нибудь сказать мне, где их поставить или указать мне в правильном направлении? Я потратил waaaay слишком много времени на это уже, и теперь я так близко.
как небольшое слово совета - в то время как это не имеет большого значения для компилятора так долго, как только код технически корректен, ваш стиль синтаксиса очень затрудняет легко прочитать ваш код и выявить любые ошибки. Добавьте некоторый интервал между строками логических блоков кода, не произвольно отступайте от фрагментов кода, а не других, и т. Д. Читаемость намного лучше, чем краткая краткость. – SnakeDoc
Это слишком много, чтобы спросить SO, чтобы отлаживать такой алгоритм :) Но вот алгоритм восхода/захода солнца, который я портировал на Java, который работает (для моего собственного тестирования) - https://gist.github.com/zhong -j-yu/2232343b14a5b5ef5b9d – ZhongYu
@SnakeDoc Ive отредактировал и добавил некоторые пробелы. Я просто работаю в течение нескольких часов, и я очень устал думать об этом. Сожалею! – Redimo