如何检测两个点矢量(C ++)中任意两点之间的碰撞?

时间:2012-12-09 00:12:29

标签: vector collision-detection point

我有一个这样的课程:

class Point
{
public:
   int x;
   int y;

   bool operator==( Point& other )
   {
       return (x == other.x) && (y = other.y);
   }
};

然后我有一个基本的Sprite类,它有一个点向量,以及我没有在下面显示的许多其他成员/方法:

class Sprite
{
   std::vector<Point> points;
};

现在如何使用Point类中的operator ==在Sprite对象的向量中找到与另一个Sprite对象的向量中的任何其他点发生碰撞的任何Point?我尝试了类似下面的东西,但它不能正常工作。 尺寸()会返回点矢量中的总点数,点数()会返回点矢量:

bool Sprite::CollidesWith( Sprite* other )
{
  for ( int ixThis = 0; ixThis < Size(); ixThis++ ) {
    for ( int ixOther = 0; ixOther < other->Size(); ixOther++ ) {
      if ( points->at(ixThis) == other->Points()->at(ixOther) )
        return true;
    }
  }

  return false;
}

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您的operator==不正确。

   bool operator==( Point& other )
   {
       return (x == other.x) && (y == other.y);
   }