只在多边形内部进行blit的事情(Pygame)

时间:2018-05-28 13:29:47

标签: python python-3.x pygame

是否可以将红色圆圈仅显示在多边形内。对于矩形,您可以确定高度和宽度。

我打算像病毒模拟器一样制作,并且有红色圆圈只出现在国家内部。但这些国家不是矩形,而是多边形/图像。

我想知道是否有可能只有圆形在多边形或图像中是blit。 感谢

2 个答案:

答案 0 :(得分:2)

假设你有一张地图作为图像,你想确定一个随机点是否在陆地上。你需要的是重新绘制的图像只有黑白像素。然后,您可以使用Pygame的Surface.get_at()命令查看像素的颜色,并根据该颜色做出决定。

或者,假设你有一个地图作为一堆多边形,你想确定一个随机点是否在陆地上。这里的逻辑称为光线跟踪,在此更好地解释:How can I determine whether a 2D Point is within a Polygon?

答案 1 :(得分:0)

为此使用matplotlib。一个非常简单的示例(将值赋予正方形的顶点):

  from matplotlib.path import Path

  verts = [
             left_bottom,
             left_top,
             right_top,
             right_bottom,
             (0, 0),
            ]

    codes = [
             Path.MOVETO,
             Path.LINETO,
             Path.LINETO,
             Path.LINETO,
             Path.CLOSEPOLY,
             ]

    path = Path(verts, codes)

   if path.contains_point((x, y)):
       print("True")