11

P(t) = [x(t), y(t), z(t)]として定義された 3D パラメトリック曲線があります。

この曲線を円弧長で再パラメータ化する関数を探しています。私は OpenSCAD を使用しています。これは、変数を持たない宣言型言語 (定数のみ) であるため、ソリューションは再帰的に機能する必要があります (グローバル定数と関数引数以外に変数はありません)。

より正確には、関数Q(s)を作成する必要があります。これは、 t=0の点から円弧に沿って(およそ) 距離sであるP上の点を与えるものです。私はすでに、答えに組み込むことができる数値積分と微分のための関数を持っています。

どんな提案でも大歓迎です!

ps OpenSCAD では関数をパラメーターとして渡すことはできません。私は通常、グローバル宣言を使用するだけでこれを回避しています。

4

1 に答える 1

2

sigmaパラメータ値間の円弧の長さで、次の積分t=0t=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 に答える