【发布时间】:2019-04-01 23:14:29
【问题描述】:
我有一个二维网格,其中像素中心位于两条半网格线的交点处,如下所示。
我还有一个在这个网格上绘制的形状。在我的例子中,形状是一个字形,并由段描述。每个段都有一个起点、终点和一些偏离曲线的点。这些段可以是二次曲线或直线。重要的是我可以知道构成形状轮廓的点和功能。
决定哪些像素应该打开的规则很简单:如果像素的中心位于形状轮廓内,则打开该像素。下图显示了应用此规则的示例。
现在我面临的问题与抗锯齿有关。我想做的是计算给定像素的面积在轮廓内的百分比。例如,在上图中,我在形状内大约 15% 的像素周围绘制了一个红色正方形。
这样做的目的是让我可以将像素只打开 15%,从而为最终的光栅图像获得一些更清晰的边缘。
虽然我能够找到用于确定给定点是否落在多边形内的算法 (ray casting),但我无法找到有关此类问题的任何信息。
有人可以指点我一些算法来实现这一点吗?如果我以错误的方式解决这个问题,也请告诉我!
【问题讨论】:
-
最简单的方法可能是超级采样:不仅要检查像素中心,还要检查像素中的一大堆点。如果要精确,则必须计算形状和像素区域的交集。这可能会变得很棘手。
-
@NicoSchertler 像超级采样这样的技术正是我想要的。这是我阅读该主题的一个很好的起点。谢谢!
标签: graphics antialiasing typography rasterizing