2013-05-08 4 views
0

Я пытаюсь вычислить расстояние, основанное на шкале моих пользователей поджимает.Вычислить Расстояние 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; 
} 
+1

Совет: используйте 'hypot (x, y)' из '' вместо 'sqrt (x * x + y * y). – 2013-05-08 20:15:12

+0

@ H2CO3 Я не знаком с Objective-C; в чем преимущество использования 'hypot (x, y)' вместо 'sqrt (x * x + y * x)'? – andand

+0

@andand Читаемость и точность. (И это просто C.) – 2013-05-08 21:02:25

ответ

0

Основной сомнительна, что я заметил, что, в метрической системе, вы пренебрегая умножить на масштаб, но вы умножая kCMConst/2. Вы не объясняете, что такое kCMConst, но вряд ли это значение, которое нужно разделить на 2.

Смежные вопросы