11

我有一条定义为P(t) = [x(t), y(t), z(t)]的 3D 参数曲线。

我正在寻找一个函数来根据弧长重新参数化这条曲线。我正在使用 OpenSCAD,它是一种没有变量(仅限常量)的声明性语言,因此解决方案需要递归工作(并且除了全局常量和函数参数之外没有变量)。

更准确地说,我需要编写一个函数Q(s),它给出P上的点,即从t=0点沿弧线的(大约)距离s。我已经有可以合并到答案中的数值积分和推导函数。

任何建议将不胜感激!

ps 在 OpenSCAD 中不能将函数作为参数传递,我通常只使用全局声明来解决这个问题。

4

1 回答 1

2

sigma参数值之间t=0的弧长t=T可以通过求解以下积分来计算:

sigma(T) = Integral[ sqrt[ x'(t)^2 + y'(t)^2 + z'(t)^2 ],{t,0,T}]

如果你想用弧长参数化你的曲线,你必须反转这个公式。不幸的是,从数学的角度来看,这是相当困难的。最简单的方法是实现一个简单的二分法作为数值求解器。计算方法很快变得繁重,因此重用以前的结果是理想的。割线法也很有用,因为 的导数sigma(t)已知且等于

sigma'(t) = sqrt[ x'(t)^2 + y'(t)^2 + z'(t)^2]

也许不是最有帮助的答案,但我希望它能给你一些想法。我无法帮助您实现 OpenSCad。

于 2019-03-19T14:40:14.383 回答