Jer*_*ose 12 functional-programming numerical-methods parametric-equations openscad
我有一个3D参数曲线,定义为P(t)= [x(t),y(t),z(t)]。
我正在寻找一种功能,可以根据弧长重新设置此曲线的参数。我正在使用OpenSCAD,这是一种没有变量的声明性语言(仅常数),因此解决方案需要递归工作(除了全局常量和函数参数外,没有变量)。
更准确地说,我需要编写一个函数Q(s),以给出P上的点,该点沿t到t = 0的点沿弧线的距离(大约)为s。我已经有一些可用于答案的数字积分和微分函数。
任何建议将不胜感激!
ps在OpenSCAD中不可能将函数作为参数传递,我通常仅通过使用全局声明来解决此问题。
sigma参数值t=0和之间的弧长t=T可以通过求解以下积分来计算:
sigma(T) = Integral[ sqrt[ x'(t)^2 + y'(t)^2 + z'(t)^2 ],{t,0,T}]
Run Code Online (Sandbox Code Playgroud)
如果你想用弧长参数化你的曲线,你必须反转这个公式。不幸的是,从数学的角度来看,这是相当困难的。最简单的方法是将简单的二分法实现为数值求解器。计算方法很快就会变得繁重,因此重用以前的结果是理想的选择。割线法也很有用,因为 的导数sigma(t)是已知的并且等于
sigma'(t) = sqrt[ x'(t)^2 + y'(t)^2 + z'(t)^2]
Run Code Online (Sandbox Code Playgroud)
也许不是最有帮助的答案,但我希望它能给你一些想法。我无法帮助您实施 OpenSCad。