计算由2D对象重叠的网格中每个单元格的分数

时间:2011-02-09 19:08:57

标签: python graphics antialiasing

我有一个任意矩形的笛卡尔网格,可能分为10 ^ 6个左右的矩形单元格。 (任意意味着$ x $网格沿点$ x_1,... x_n $和$ y $网格相同。)我想在它上面绘制一个任意对象(比如一个旋转的矩形,或者圆圈),并有效地计算每个单元格的哪个部分与对象重叠:如果单元格完全位于对象的边界内,则为1.0;如果细胞完全在外面,0.0;如果一半的细胞被物体覆盖,0.5。如果您将其显示为图像并将其缩放为1为黑色且0为白色,则结果将类似于黑色对象的抗锯齿图形。

我对这个问题的应用是在Python中,似乎这个功能可能是由一些现有的图形库提供的。是否有一个Python模块将测试矩形和任意对象的分数交集?是否有一个Python库可以至少有效地测试一个点是否在任意对象内部,如旋转的矩形?

2 个答案:

答案 0 :(得分:0)

您可以使用具有快速本机例程的PyCairo来进行绘制。它默认是抗锯齿的。

在Python中实现绘图算法会非常慢。

答案 1 :(得分:0)

要查找由多边形-正方形相交产生的梯形区域,可以按照Sean Barrett在https://nothings.org/gamedev/rasterize/中描述的过程进行操作

shapely Python库可以找到梯形的区域并执行目标点测试。但是,为了获得最佳性能,这听起来像是您想用C / C ++编写并提供numpy绑定的东西。