• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

当轮廓上的第一个点关闭曲线时,如何解释freetype标志符号轮廓

c/c++ 来源:chrmue 4次浏览

我实际上正在研究将freetype标志符号转换成多段线以控制激光标记系统的渲染器。我遇到的问题是,我不知道如何正确处理以关闭曲线点开始的轮廓(99.9%从曲线点开始!)。我搜索了很长时间的信息,但我找不到任何有用的信息。当轮廓上的第一个点关闭曲线时,如何解释freetype标志符号轮廓

感谢您的帮助


===========解决方案如下:

FreeType的使用三种类型的点:曲线上,二次控制点(也被称为“圆锥曲线”)和立方控制点。二次控制点与它们两侧的曲线上的点分组,以形成定义二次贝塞尔样条所需的三个点。三次控制点必须成对出现,并且在任一侧上与曲线上的点分组以构成三次Bézier样条所需的四个点。

但是,只有二次点的简写符号。如果二次点彼此相邻,则在它们之间插入一个在曲线上的控制点。另外还有一个约定,如果闭合路径以二次点开始,则检查路径的最后一个点,如果它是二次的,则在它们之间插入一个曲线上的点,并且路径以曲线上的点;如果最后一点不是二次控制点,则它本身用于起点。

如果你想看到完成这个过程,请看FreeType源代码。函数FT_Outline_Decompose遍历路径并将其转换为一系列两种类型的直线和曲线。这是在该文件中:

http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/src/base/ftoutln.c

特别有意义的部分与此评论开始(再次指出“圆​​锥曲线”是指与在此背景下“二次”):

/* first point is conic control. Yes, this happens. */ 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)