2014-12-28 4 views
-5

두 개의 CGPoint가 프레임 사각형의 두 모서리 위치입니다.두 값을 비교하고 두 값 중 가장 큰 값을 반환합니다.

별도의 지침을 제공해야합니다 (하나는 수직면), 다른 하나는 하단에 대한 지침입니다.

어떻게 비교 한 후 별도의 지침을 제공합니까?

+0

두 점은 어느 곳입니다 직사각형에 ?? 한 가지 방법은 포인트를 최상부 및 최하부 대부분의 포인트, 즉 대각선 포인트와 비교하는 것이다. 따라서 포인트가 최상위 지점으로 향하는 경우 최상단과 관련된 지시를 수행하십시오. 최하위와 관련된 지시를 수행하십시오. 포인트에 대해 더 명확히 할 수 있습니까 ?? 비교는 Eucledian 거리 공식 – Jigar

+0

@ Jigar의 도움으로 이루어집니다. 질문을 생각해 본 것 같습니다. 한 점이 다른 점 위에 있으면 유클리드 거리와 관련이 거의 없습니다. – Abizern

+2

글쎄, 먼저 "가장 큰"의미를 정의해야합니다. 가장 큰 Y 값을 선택하기 만하면 사소한 테스트이고 왜 여기 묻는 지 궁금합니다. –

답변

-1

사용 ...

CGPoint upperPoint = ((one.y < two.y) ? one : two); 
CGPoint lowerPoint = ((one.y < two.y) ? two : one); 

아니면 FMAX/FMIN 형 매크로를 사용 ...

CGFloat lesserYvalue = ((CGFloat) fMinf(one.y , two.y)); 
CGFloat greaterYvalue = ((CGFloat) fMaxf(one.y , two.y)); 
0

CGPoint가 두 개인 경우 하나가 다른 CGPoint보다 위에 있으면 다른 CGPoint보다 y 값이 낮습니다.

예를 들어 :

CGPoint point1 = CGPointMake(100.0, 120.0); 
CGPoint point2 = CGPointMake(100.0, 80.0); 

당신이 방법을 쓸 수있다 : 두 점을

- (NSComparisonResult)compareYValueOfPoint:(CGPoint)point1 toPoint:(CGPoint)point2 
{ 
    CGFloat y1 = point1.y; 
    CGFloat y2 = point2.y; 

    if (y1 == y2) { 
     return NSOrderedSame; 
    } else if (y1 < y2) { 
     return NSOrderedAscending; 
    } else { 
     return NSOrderedDescending; 
    } 
} 

와 함께 전화 :

NSComparisonResult result = [self compareYValueOfPoint:point1 toPoint:point2]; 

그리고 결과에 따라, 사용 추가 작업을위한 관련 지점.

0

CGPoint 두 필드 x & y 함유 복합 값 (struct)이다.

두 개의 임의의 점이 있다면 그 y- 좌표가 다른 y- 좌표보다 큰 경우 다른 하나의 "위"에 있습니다. 하나는 x 좌표가 큰 경우 다른 하나의 오른쪽에 있습니다. 알려진 순서에 새로운 변수를 초기화하는 원 사업자

CPPoint one, two; 

if (one.y > two.y) { // one is above two } 

if (two.x > one.x) { // two is to the right of one } 
관련 문제