Неправильный код столкновения прямоугольника - PullRequest
0 голосов
/ 12 ноября 2011

У меня есть следующий код:

+(bool)Point:(CGPoint)point isInRectangle:(CGRect)rect
{
    int rectx1 = rect.origin.x;
    int recty1 = rect.origin.y;
    int rectx2 = rect.origin.x + rect.size.width;
    int recty2 = rect.origin.y + rect.size.width;
    int pointx = point.x;
    int pointy = point.y;
    return (pointx >= rectx1 && pointx <= rectx2) && (pointy >= recty1 && pointy <= recty2);
}

Предполагается обнаружить столкновение между двумя прямоугольниками, но я не получаю правильное значение. Кто-нибудь может мне помочь?

Ответы [ 3 ]

3 голосов
/ 12 ноября 2011

Почему бы просто не использовать встроенные функции геометрии?

CGRect CGRectContainsPoint(CGRect rect, CGPoint pt);
CGRect CGRectIntersectsRect(CGRect rect1, CGRect rect2);

Вот для чего они. :) Документы для этих и многих других полезных функций: http://developer.apple.com/library/ios/#DOCUMENTATION/GraphicsImaging/Reference/CGGeometry/Reference/reference.html

1 голос
/ 12 ноября 2011

Я думаю здесь:

int recty2 = rect.origin.y + rect.size.width;

Вы, вероятно, имели в виду:

int recty2 = rect.origin.y + rect.size.height;

Но вы должны знать, что уже существует функция C CGRectContainsPoint (точка, точка), которая делает то, что вы хотите. Так что вам не нужно писать один, если вы не хотите.

1 голос
/ 12 ноября 2011

Одна из этих строк должна быть высота, а не ширина.

int rectx2 = rect.origin.x + rect.size.width;
int recty2 = rect.origin.y + rect.size.width;
...