2013-05-08 1 views
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; 
} 
+1

팁 :'sqrt (x *) 대신' '에서'hypot (x, y)'를 사용하십시오. x + y * y)'로 표시됩니다. –

+0

@ H2CO3 Objective-C에 익숙하지 않습니다. sqrt (x * x + y * x) 대신에'hypot (x, y)'를 사용하면 어떤 점이 유리합니까? – andand

+0

@andand 해독도 및 정밀도. (그리고 그것은 평범한 C입니다.) –

답변

0

내가주의 주요 의문 것은 메트릭에, 당신은 규모에 의해 증식 무시하고,하지만 당신은 kCMConst/2를 곱되어 있다는 점이다. kCMConst가 무엇인지는 설명하지 않지만 2로 나눌 필요가있는 값은 아닌 것 같습니다.