Я пытаюсь вычислить расстояние, основанное на шкале моих пользователей поджимает.Вычислить Расстояние Forumla при использовании шкалы
Мой пользователь может привязать к другим точкам в игре с помощью нарисованной линии на сетке.
Сетка представляет собой числовое значение, которое они могут выбрать 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;
}
Совет: используйте 'hypot (x, y)' из '' вместо 'sqrt (x * x + y * y). –
2013-05-08 20:15:12
@ H2CO3 Я не знаком с Objective-C; в чем преимущество использования 'hypot (x, y)' вместо 'sqrt (x * x + y * x)'? – andand
@andand Читаемость и точность. (И это просто C.) – 2013-05-08 21:02:25