labaneseren 发表于 2019-9-21 11:10:51

B-样条曲线


我正在编写一个脚本,它生成一个包含立体几何图形的步骤AP203。
我注意到几乎所有的非简单曲面和曲线都是使用B _ spline _ curve/surface _ with _ knots函数通过B样条以STEP格式描述的。
假设我有一个参数化定义的曲线或曲面。看起来STEP不允许我这样描述,我需要用B样条来逼近它。
我是否需要从头开始编写自己的代码来计算最接近我的曲线的控制点和节点,或者该功能是否可用?
我查看了stepcode和stepmod,但是我不知道它们的确切用法。你们有人用过这些吗?
基本上,现在我只需要一些代码,可以输入一组我希望位于曲线/曲面上的坐标,然后输出定义适当的B样条所需的控制点和节点。
**** Hidden Message *****

labaneseren 发表于 2019-10-25 10:44:07

你好。只是想与你们分享我的解决方案。
我拿起了David Salomon的《Computer Graphics的曲线和曲面》一书,阅读了关于Bezier曲线和B样条的章节。在阅读了这个非常清晰明了的样条描述之后,只需要一点数学就可以得到我需要的东西。
基本上,STEP文件在定义曲线时主要使用NURBS。但是“b_spline_curve_with_knots”命令也允许统一的b样条曲线。它不区分两者。
虽然近似的NURBS曲线(如最小二乘近似)是最适合给定数量的点的最佳解决方案,但它在数学上要复杂得多,因此现在不在我能掌握的范围内。因此,我使用了一个简单的插值B样条,其中每个样条线段都在我的给定点处结束。就我目前的目的而言,这已经足够了。
STEP文件几乎只使用“打开b样条曲线”,这意味着曲线在第一个和最后一个控制点开始和结束。因此,任务是找到两者之间的控制点,其中有n-1个。但是只有n-3个插值点,所以我输入最后两个方程作为起点和终点的切线。这现在是一个由n-1向量方程组成的线性系统,很容易求解。
这里的图是我的样条,其中4个插值点是曲线上的黑点,6个蓝色控制点是使曲线通过4个黑点的控制点。
页: [1]
查看完整版本: B-样条曲线