【发布时间】:2023-02-23 05:47:40
【问题描述】:
我必须根据 dxf 文件中的数据在 qt 中实现样条绘图。关于样条曲线的数据总是只包含控制点的坐标。
QPainterPath 函数cubicTo()使用一个当前点、一个终点(这个属于样条曲线)和 2 个控制点。当我想使用多个三次贝塞尔样条曲线通过 5 个或更多控制点构建样条曲线时,我不知道它们之间的拟合点坐标(属于样条曲线)要使用cubicTo().此外,如果我在计算原始样条曲线上缺失的拟合点后仅组合多个三次样条曲线,我不确定样条曲线的图像是否正确。
我可以使用什么算法通过 qt 中超过 4 个控制点构建样条曲线,仅包含有关控制点的信息,而不是拟合点?
例如,在解析我的 dxf 后,我得到标记为红色的控制点坐标: 一开始,我以为这些控制点是贝塞尔曲线的控制点。 我什至尝试计算它们,但在这种情况下,贝塞尔曲线的控制点数量超过 6 个。我正在使用这个question 的算法。 所以我了解如何计算控制点,了解拟合点,但如何使用从 dxf 获得的点进行反向计算。 如果您尝试使用问题中的计算算法来处理图像上的样条曲线,您将获得超过 6 个控制点,因此这是表征它的其他方式。
这是一张图片,显示了从该算法获得的数据与我拥有的数据之间的差异: 我需要什么数学来解决这个问题以及如何获得这些点的数学描述? 谢谢你的帮助。
【问题讨论】:
-
@jr_w 如下所述,有几种可能性。一种是通过 mouseMoveEvent 识别每个控制点并在输入表单时激活鼠标跟踪。你看过qt creator
Affine Transformations中的例子吗?也许这会对你有所帮助。那样的话,他们就不用做很多计算了。 -
你怎么称呼“适合点”?
标签: c++ algorithm qt math spline