在所有计算机图形书籍中,都有用于将线,圆,椭圆,...等简单图元进行扫描转换的算法。

我找不到用于贝塞尔曲线,b样条曲线,nurbs等更高级曲线的算法。 。

我在哪里可以找到引用?

我还有另一个疑问:扫描转换和光栅化是同一件事吗?

评论

“我还有另一个疑问:扫描转换和光栅化是同一件事吗?” 这可能取决于谁支付您遇到的专利律师。但是,我倾向于说扫描转换可能是光栅化过程的一个子集,即扫描转换是确定哪些像素在(一个或多个)每个图元内部的过程。是否还要在“扫描转换”中包含阴影/纹理还有些不确定。我倾向于将这些视为“分开”的步骤。

请参阅en.wikipedia.org/wiki/Bézier_curve#Computer_graphics。

#1 楼

忽略非均匀B样条曲线(有理与否),我在贝塞尔曲线的栅格化方面有一些经验,而且由于从均匀B样条到贝塞尔曲线也有微不足道的映射。已经使用了两种不同的技术:第一种是使用Newton-Rhapson来计算当前扫描线与曲线的交点的扫描线渲染器。这需要一阶导数,但由于可以从父曲线的控制点再次作为Bezier表示形式进行微分,因此很容易获得。此外,一阶导数控制点的边界框可用于检测区域与扫描线的交点是否大于1。
当前扫描线可以使用先前扫描线的解作为起点-通常,通过一次迭代即可提供高度精确的解决方案。或者,第二种方法是简单地应用曲线的二进制细分,然后使用您喜欢的多边形渲染器将其渲染为一系列直线段。如果我没记错的话,至少对于三次贝塞尔曲线,在每个细分中,连接(sub)Bezier端点的线段与真实曲线之间的误差减少了4倍。因此,在大多数情况下,它不需要在多边形逼近与真实曲线之间的差异不大之前,许多细分都微不足道。在最近的Twitter提要中。

评论


$ \ begingroup $
对于三次曲线,扫描线方法也可以看作是一维问题,仅涉及Y方程(即三次方程)。您可以通过分析找到两个极值(这是一个二次方程式),以实现根的可靠分离。根的完全解析计算也是可能的,但是增量分辨率(牛顿或其他)的成本较低。
$ \ endgroup $
–伊夫·达乌斯特(Yves Daoust)
2015年9月23日下午6:33