欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

问 如何使用 Python 将二维贝塞尔曲线挤出为三维实体?

最编程 2024-04-14 15:19:26
...

你不能通过挤出一条曲线或一组曲线来创建实体。即使他们被关闭了。想想在XY平面上的一个圆圈。如果你沿着Z轴挤压圆圈,你就有一个没有盖的圆柱。

不过让我们走回去吧。如果您有一个单一的Bezier曲线,并挤压它,您将创建一个Bezier曲面。如果您了解Bezier曲线,您可以快速地将头绕在Bezier曲面上。

https://en.wikipedia.org/wiki/B%C3%A9zier_面形

你可以把Bezier曲面看作是一组曲线的混合。要挤出曲线,只需复制原始曲线,并将控制点Z值设置为挤压距离。原始曲线和新的挤压曲线为你的曲面创建控制点。

实际上,我有一个用Python编写的Bezier曲面示例。唯一的依赖项是Numpy和Matplotlib。它还使用从存储库中的另一个文件导入的Bernstein函数。您可以使用控制点来查看修改它们对结果表面的影响。没有错误检查,所以你必须知道你在做什么。

https://github.com/jrz371/IntroToNurbsPython/blob/master/BezierSurface.py

至于参数化的跨度和和弦长度,你必须自己推导出来。我不熟悉你的要求。彻底了解Bezier曲线和曲面会帮助您解决这个问题。

一些评论建议对曲线进行评估并创建三角形。这是个糟糕的方法。修改Bezier曲面会导致大量信息的丢失。Bezier曲面是光滑的,而一组三角形不是光滑的。对于绘制Bezier曲面,它们最终会被用于显示,但它们保留在原始的Bezier表示中以进行修改。

Bezier曲线也不是曲线和曲面的最佳表示形式。BSplines和NURBS能够表示更复杂的曲面和曲线。在解决这些问题之前,了解贝齐尔是基本的先决条件。

祝好运!