如何在Qt中用图形方式绘制布条曲线?

4
我正在尝试构建一个应用程序,用户可以使用鼠标绘制布条曲线,即设置螺旋的起点和终点,然后通过拖动这些点来修改起始和结束曲率以设置布条曲线的形状。可能需要使用切线来改变曲率,但我不确定。如何在Qt中实现这个功能?您是否知道任何我可以在Qt中运行的示例代码?

如果您仍需要解决布条曲线绘制问题,我已经发布了一些示例代码链接。如果这个回复来晚了半年,那我很抱歉。如果您在此期间找到了其他高效的示例代码,我会很感兴趣知道。 - Rethunk
2个回答

3

图形视图框架听起来很不错。但是我该如何绘制这些布条曲线段?根据我所知,在Qt中有用于Bezier曲线的cubicTo方法,但在此无法使用。我想根据给定的布条曲线段的起始和结束曲率来绘制曲线。 - schmimona

2
我知道这是一个老问题,但对于感兴趣的人,Kimia、Frankel和Popescu在论文“Euler Spiral for Shape Completion”中对欧拉螺旋(布洛伊德曲线)的理论和伪代码进行了很好的讨论。可以在布朗大学的网站上找到示例C ++代码。 Euler Spiral for Shape Completion 下载Kimia、Frankel和Popescu方法的C++代码的页面 Levien等人的论文提出了改进Kimia等人论文中“双弧”的计算的方法。Levien的论文包括深入的历史研究。 Raph Levien的论文“Euler spiral: a mathematical history” 您只需要四个参数来绘制螺旋线:两个端点和这些端点处的切线角度。(您不需要定义曲率。)该代码输出在您选择的距离增量下两个端点之间的中间点。您只需要绘制并连接这些中间点。
一旦您实现了代码,您可能需要调整一些参数,例如最小曲率。您可能会看到一些参数导致代码“崩溃”。

你有找到更有效率的代码吗?你提供的C++代码似乎使用了迭代搜索来寻找解决方案。我需要的是一些能够在快速、恒定的时间内运行的东西。 - Rocketmagnet
我有一段时间没有折腾这个了。从我记得的来看,Levin的论文有更快的方法。 - Rethunk
同时: "3D欧拉螺旋线用于3D曲线。" http://cgm.technion.ac.il/people/Gur/papers/2012/12-HT-CGTA.pdf - Rethunk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接