2017-02-18 11 views
-1

UIView에서 가장 가까운 CGPoint에 대해 클러스터를 수행하는 것과 같은 시나리오가 있습니다. 그래서 나는 내가 가장 가까운 값을 얻기 위해 노력하고 클러스터 않습니다 CGPoint있는 NSArray의 설정하지만 난 논리를 가져올 수 없습니다 : // 내 코드 시간뿐만 아니라에 오버라이드 (override) 중복 점을 얻는 반복 코드 위가장 가까운 CGPoint를 찾고 NSArray에서 클러스터를 만드는 방법은 무엇입니까?

for (CGPoint firstObjOfCGPoint in cgPointGroupArray) {    

    for (CGPoint nextPoint in cgPointGroupArray) { 

    if (30>[self distanceBetween: firstObjOfCGPoint and:nextPoint]){     
       [shortestClusterArr addObject:nextPoint]; 
      } 
      else{ 
       [longestClusterArr addObject:nextPoint]; 
      } 
     } 
      if(shortestClusterArr.count>2){ 
      //clustered marker 
       [self addClusterMarker:shortestClusterArr]; 
      } 
      else{ 
       //dont cluster marker 
      } 
    } 
} 


    //find distance 

    - (float)distanceBetween:(CGPoint)p1 and:(CGPoint)p2 
    { 
     return hypotf((p1.x-p2.x), (p1.y-p2.y)); 

    } 

, 동일한 객체이므로 아무도 논리 논평을 알고 있다면 ..

답변

0

객체를 추가하기 전에 이미 존재하는지 확인해야합니다. 다음과 같은 내용 :

for (CGPoint nextPoint in cgPointGroupArray) { 
      if (30>[self distanceBetween:point and: nextPoint]) { 
       if (![shortestClusterArr containsObject:nextPoint]) 
        [shortestClusterArr addObject:nextPoint]; 
      } 
      else{ 
       if (![longestClusterArr containsObject:nextPoint]) 
        [longestClusterArr addObject:nextPoint]; 
      } 
     }