0

ユーザーが描く縮尺に基づいて距離を計算しようとしています。

ユーザーは、グリッド上に線を引くことで、ゲーム内の他のポイントにスナップできます。

  • グリッドは、8、16、24、または 32 から選択できる数値です。

  • スケールは、ユーザーが整数 (1 ~ 10) と分数 (0、0.5、0.75、または 0.125) を選択して変更できます。

  • ユーザーは、メートル単位または経験単位で距離を表示することを選択できます。

スケールを変更すると、距離を吐き出すのに苦労しています。

私の数学のどこが間違っているのか誰か教えてもらえますか?

- (double) distanceFormula : (float) x1 : (float) y1 : (float) x2 : (float) y2 {
    // 1 meter * 3.280839895 feet => feet
    // 1 foot * 1 meter/3.280839895 feet => meter

    /* Use Pythagora's theorem to calculate distance */
    double dx = (x2-x1);
    double dy = (y2-y1);
    double dist = sqrt(dx*dx + dy*dy);
    NSLog(@"Raw Distance %f", dist) ;
    return dist;
}


- (NSString *) returnDistanceAsString : (double) distance {

    NSString * string;
    double d = distance / [self returnGridSize];
    double scale = [self returnScaleWhole] + [self returnScaleSub];

    if ([self returnUseMetric]) {
        //METRIC
        int tempCentim  = (d * kCMConst) / 2;

        if  (tempCentim < 1) {
            string = [NSString stringWithFormat:@"%d mm", tempCentim];
        } else if (tempCentim > 1) {
            string = [NSString stringWithFormat:@"%d mm", tempCentim];
        } else if (tempCentim > 100) {
            //eventually going to add cm mm 
        }

    } else {
        //EMPERICAL
        int RL = d * scale;
        int feet = RL / 12.0;
        int inches = (int)RL % 12;
        string = [NSString stringWithFormat:@"%i' %i\"", feet, inches];
    }

    return string;
}
4

1 に答える 1

0

私が気づいた主な疑わしい点は、メトリックでは、スケールを掛けることを怠っていますが、kCMConst/2 を掛けているということです。kCMConst が何であるかを説明していませんが、2 で割る必要がある値ではないようです。

于 2013-05-09T04:46:11.400 に答える