图形

-1

怎样可以判断两个图形碰撞了呢

ava
风会停息

2020-4-1

0

那要看你指的“图形”是什么。如果是图片的话,那就是矩形,判断两张图片“碰撞”,就是判断两个矩形是否相交。实现上,可以判断四种“不相交”的情况,然后取反即可。代码如下:

bool IsRectOverlap(const RECT& r1, const RECT& r2)
{
	return !( ((r1.right < r2.left) || (r1.bottom > r2.top)) || 
			  ((r2.right < r1.left) || (r2.bottom > r1.top)) );
}

如果图形是圆,判断两个圆是否碰撞,就是判断两个圆是否相交。实现上,就是判断两圆心距离是否大于两圆半径之和。代码如下:

bool IsCircleOverlap(int x1, int y1, int r1, int x2, int y2, int r2)
{
	return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) <= (r1 + r2) * (r1 + r2);
}
ava
慢羊羊

2020-4-1

技术讨论社区