ユーザーが描く縮尺に基づいて距離を計算しようとしています。
ユーザーは、グリッド上に線を引くことで、ゲーム内の他のポイントにスナップできます。
グリッドは、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;
}