我有一个二维网格,其中像素中心位于两条半网格线的交点处,如下所示。
我也有在此网格上绘制的形状。在我的情况下,形状是字形,并用段描述。每个线段都有一个起点,终点和多个曲线点。这些线段可以是二次曲线或直线。重要的是我必须知道构成形状轮廓的点和功能。
确定打开哪些像素的规则很简单:如果像素的中心落在形状轮廓内,则打开该像素。下图显示了应用此规则的示例。
现在我面临的问题与抗锯齿有关。我想做的是计算给定像素占轮廓的百分比。例如,在上图中,我在像素周围绘制了一个红色正方形,该像素大约占形状的15%。
这样做的目的是让我可以仅将像素打开15%,从而为最终的光栅图像获得一些更清晰的边缘。
虽然我能够找到确定给定点是否落在多边形(ray casting)内的算法,但是却找不到关于此类问题的任何信息。
有人可以指出一些实现该目标的算法吗?还请让我知道我是否要以错误的方式解决这个问题!
答案 0 :(得分:0)
这听起来像X,Y问题。
您正在寻求一种计算像素覆盖率百分比的方法,但是根据您的问题,听起来您想要做的是对多边形进行反别名。
如果仅使用单色2D形状(即红色,蓝色,洋红色...正方形,直线,曲线...),则非常简单的解决方案是创建图像并随后模糊结果。
这将自动为您提供平滑的轮廓,并且易于在多种语言中实现。