矩形の衝突コードが正しく機能しない

私は次のコードを持っています:

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

2つの矩形の衝突を検出するはずですが、正しい値が得られていません。誰か助けてくれますか?

0
追加された 編集された
ビュー: 1

3 答え

なぜ組み込みのジオメトリ関数を使用しないのですか?

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
追加された

私はここで思う:

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

あなたはおそらく意味:

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

しかし、あなたが望むことをするC関数CGRectContainsPoint(rect、point)が既にあることを知っておく必要があります。だからあなたがしたいのでなければ、あなたは書く必要はありません。

1
追加された
ありがとう、私は知らなかったし、私はそのエラーに気付かなかった
追加された 著者 rdelfin,

これらの行の1つは、幅ではなく高さでなければなりません。

  int rectx2 = rect.origin.x + rect.size.width;
int recty2 = rect.origin.y + rect.size.width;
 
1
追加された