gpt4 book ai didi

c++ - 当轮廓上的第一个点偏离曲线时如何解释自由字形轮廓

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:11 25 4
gpt4 key购买 nike

我实际上正在开发一种渲染器,可以将自由字形转换为折线以控制激光标记系统。我遇到的问题是我不知道如何正确处理以曲线外点开始的轮廓(99.9% 以曲线点开始!)。我已经搜索了很长时间的信息,但找不到任何有用的信息。

谢谢你的帮助

最佳答案

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

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

如果您想确切了解这是如何完成的,请查看 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. */

关于c++ - 当轮廓上的第一个点偏离曲线时如何解释自由字形轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3465809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com