首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用objective-c访问月球经度值

如何使用objective-c访问月球经度值
EN

Stack Overflow用户
提问于 2013-09-26 20:34:53
回答 1查看 267关注 0票数 0

我需要找出月亮的经度值来找到Nakshatra和tithi。

我使用下面的c语言代码来获取月亮的经度,

代码语言:javascript
复制
 //Longitude of Moon
    static double moon_long(double d)
    {
    double N, i, w, a, e, M, E, Et, x, y, r, v, xec, yec, zec, D, F, tmp, tmp1, tmp2, lon;

    N = 125.1228-0.0529538083*d;
    i = 5.1454;
    w = REV(318.0634+0.1643573223*d);
    a = 60.2666;
    e = 0.054900;
    M = REV(115.3654+13.0649929509*d);
    Mm = M;
    Lm = N+w+M;

    //Calculate Eccentricity anamoly
    tmp = M*D2R;
    E = M+R2D*e*sin(tmp)*(1+e*cos(tmp));

    tmp = E*D2R;
    Et = E-(E-R2D*e*sin(tmp)-M)/(1-e*cos(tmp));

    do {
        E = Et;
        tmp = E*D2R;
        Et = E-(E-R2D*e*sin(tmp)-M)/(1-e*cos(tmp));
    } while(E-Et>0.005);

    tmp = E*D2R;
    x = a*(cos(tmp)-e);
    y = a*sqrt(1-e*e)*sin(tmp);

    r = sqrt(x*x + y*y);
    v = REV(R2D*atan2(y,x));

    tmp = D2R*N;
    tmp1 = D2R*(v+w);
    tmp2 = D2R*i;
    xec = r*(cos(tmp)*cos(tmp1)-sin(tmp)*sin(tmp1)*cos(tmp2));
    yec = r*(sin(tmp)*cos(tmp1)+cos(tmp)*sin(tmp1)*cos(tmp2));
    zec = r*sin(tmp1)*sin(tmp2);

    //Do some corrections
    D = Lm - Ls;
    F = Lm - N;

    lon = R2D*atan2(yec,xec);

    lon+= -1.274*sin((Mm-2*D)*D2R);
    lon+= +0.658*sin((2*D)*D2R);
    lon+= -0.186*sin((Ms)*D2R);
    lon+= -0.059*sin((2*Mm-2*D)*D2R);
    lon+= -0.057*sin((Mm-2*D+Ms)*D2R);
    lon+= +0.053*sin((Mm+2*D)*D2R);
    lon+= +0.046*sin((2*D-Ms)*D2R);
    lon+= +0.041*sin((Mm-Ms)*D2R);
    lon+= -0.035*sin((D)*D2R);
    lon+= -0.031*sin((Mm+Ms)*D2R);
    lon+= -0.015*sin((2*F-2*D)*D2R);
    lon+= +0.011*sin((Mm-4*D)*D2R);

    return REV(lon);
}

但是我得到了错误的值,你能给我解释一下,如何计算月亮经度,或者我应该使用哪个程序。

EN

回答 1

Stack Overflow用户

发布于 2013-09-26 22:35:38

很难告诉你“哪里出了问题”,因为你没有回答评论中提出的一些问题。使用您的代码中的一行,我找到了我认为您在https://github.com/santhoshn/panchanga中想要的实现

我构建了代码(将所有内容移动到其自己的目录中,然后使用

代码语言:javascript
复制
gcc *.c -lm -o panchanga

并使用今天的日期和印度孟买的时区进行了测试:

代码语言:javascript
复制
panchanga -d 26/09/2013 -t 20:02 -z +5:30

输出:

代码语言:javascript
复制
Tithi     : Saptami, Krishna Paksha
Nakshatra : Mrigashira
Yoga      : Vyatipata
Karana    : Bava
Rashi     : Mithuna

我不知道这些是什么意思,但我确认了针对http://www.drikpanchang.com/?l=10455的结果-他们同意了。

我给你的建议是:看看这个解决方案与你正在做的有什么不同--这就是你如何发现“你的代码有什么问题”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19028450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档