C++ 如何在Qt中以图形方式绘制回旋线?

C++ 如何在Qt中以图形方式绘制回旋线?,c++,math,qt4,C++,Math,Qt4,我正在尝试构建一个应用程序,用户可以使用鼠标绘制回旋线,即设置螺旋线的起点和终点,然后使用鼠标拖动这些点,用户还可以通过修改起点和终点曲率来设置回旋线的形状。可能为了改变曲率,我需要使用切线,尽管我不确定 如何在Qt中实现这一点?您知道我可以在Qt中运行的任何示例代码吗?最好的方法可能是使用 这里有几个例子可以帮助您开始阅读本页。这看起来是你想要达到的目标的一个很好的起点。我意识到这是一个老问题,但对于感兴趣的人来说,Kimia、Frankel和Popescu在论文《形状完成的Euler螺旋》中

我正在尝试构建一个应用程序,用户可以使用鼠标绘制回旋线,即设置螺旋线的起点和终点,然后使用鼠标拖动这些点,用户还可以通过修改起点和终点曲率来设置回旋线的形状。可能为了改变曲率,我需要使用切线,尽管我不确定


如何在Qt中实现这一点?您知道我可以在Qt中运行的任何示例代码吗?

最好的方法可能是使用


这里有几个例子可以帮助您开始阅读本页。这看起来是你想要达到的目标的一个很好的起点。

我意识到这是一个老问题,但对于感兴趣的人来说,Kimia、Frankel和Popescu在论文《形状完成的Euler螺旋》中对Euler螺旋(回旋线)的理论和伪代码进行了很好的讨论。样本C++代码可以在布朗大学网站上找到。p>

Levien等人的论文提出了改进Kimia等人论文“biarc”计算的方法。Levien的论文包括深入的历史

绘制缓和曲线只需要四个参数:两个端点和这些端点处的切线角度。(您不需要定义曲率。)代码以您选择的距离增量输出两个端点之间的中间点。您只需绘制并连接这些中间点


实现代码后,可能需要调整一些参数,例如最小曲率。您可能会看到一些代码“爆炸”的参数。

图形视图框架听起来非常不错。但我怎么能画这些回旋线的片段呢?据我所知,在Qt中,Bezier曲线有cubicTo,但这在这里不起作用。我想根据给定的回旋线线段的起点和终点曲率绘制曲线。如果您仍然需要解决回旋线绘制问题,我发布了一些示例代码的链接。抱歉,如果这已经晚了半年。如果您同时发现了其他一些高效的示例代码,我很想知道。您是否找到了更高效的代码?链接到的C++代码看起来像是用迭代搜索找到解决方案。我需要的是在快速、恒定的时间内运行的东西。我已经有一段时间没有机会修补它了。据我记忆所及,莱文的论文有一个更快的方法。另外:“3D Euler螺旋表示3D曲线。”