Slechte botsbotsingscode

Ik heb de volgende code:

+(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);
}

Het zou de botsing tussen twee rechthoeken moeten detecteren, maar ik krijg niet de juiste waarde. Kan iemand me helpen?

0

3 antwoord

Waarom niet alleen de ingebouwde geometriefuncties gebruiken?

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

That's what they're there for. :) Docs for these and many other useful functions at: http://developer.apple.com/library/ios/#DOCUMENTATION/GraphicsImaging/Reference/CGGeometry/Reference/reference.html

3
toegevoegd

Ik denk hier:

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

je bedoelde waarschijnlijk:

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

Maar je moet weten dat er al een C-functie CGRectContainsPoint (rect, point) is die doet wat je wilt. U hoeft er dus geen te schrijven, tenzij u dat wilt.

1
toegevoegd
Bedankt, ik had geen idee en ik merkte die fout niet op
toegevoegd de auteur rdelfin, de bron

Een van deze lijnen moet hoogte niet breed zijn.

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