我的数学不好,但我需要将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;
}
开普勒功能错误。 也许,你可以说,我哪里错了? 感谢。
答案 0 :(得分:3)
您在此行中使用的是m
而不是_m
:
delta = e - ecc * sin(e) - m;