数学函数在PHP中运行良好,但在Objective C中是错误的

时间:2012-10-07 01:33:49

标签: php objective-c ios math

我的数学不好,但我需要将PHP数学例程转换为Objective C,以便在iOS应用程序中进行计算。

我有这个代码,在PHP中,它运行正常:

 function torad ( $arg )        { return ($arg * (pi() / 180.0)); }         
 function kepler ( $m, $ecc ) {
    $EPSILON = 1e-6;
    $m = torad( $m );
    $e = $m;
    do  {
        $delta = $e - $ecc * sin( $e ) - $m;
        $e -= $delta / ( 1 - $ecc * cos($e) );
    } while ( abs($delta) > $EPSILON );
    return ( $e );
 }

这是代码,我在Objective C(适用于iOS):

+ (double) toRad:(double)arg{
    return (arg * (3.14159265 / 180.0));  // 3.14159265 = pi()
}

+ (double) kepler:(double)m  ecc:(double)ecc {
    double EPSILON = 1e-6;
    double _m = [self toRad:m];
    double e = _m;

    double delta;

    do {
        delta = e - ecc * sin(e) - m;
        e -= delta / (1 - ecc * cos(e));
    } while (abs(delta) > EPSILON);

    return e;
}

开普勒功能错误。 也许,你可以说,我哪里错了? 感谢。

1 个答案:

答案 0 :(得分:3)

您在此行中使用的是m而不是_m

delta = e - ecc * sin(e) - m;