我正在尝试根据用户绘制的比例来计算距离。
我的用户可以通过在网格上绘制一条线来捕捉游戏中的其他点。
网格是一个数值,可以选择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;
}
答案 0 :(得分:0)
我注意到的主要问题是,在公制中,你忽略了按比例乘以,但是你乘以kCMConst / 2。你没有解释什么是kCMConst,但它似乎不太可能是一个需要除以2的值。