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 回答