0

我数学不好,但我需要将 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;
}

开普勒函数工作错误。也许,你可以说,我错在哪里?谢谢。

4

1 回答 1

3

您在这一行中使用m而不是:_m

delta = e - ecc * sin(e) - m;
于 2012-10-07T01:40:59.240 回答