問題タブ [parametric-equations]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python でのパラメトリック カーブのフィッティング
フォームの実験データとフォーム(X,Y)
の理論モデルがあり、(x(t;*params),y(t;*params))
はt
物理的 (ただし観測不可能) 変数であり、*params
決定したいパラメーターです。は連続変数であり、モデル内のとと の間に と の間t
に 1:1 の関係があります。x
t
y
t
完璧な世界では、(パラメーターの実際の値) の値を知ってT
いて、非常に基本的な最小二乗法を実行して の値を見つけることができます*params
。( 31243002や31464345のように、プロット内のとの値を「接続」しようとしているわけではないことに注意してください。)データは複数のサイクルにわたって収集されるため、実際のデータでは潜在値が単調であることを保証できません。x
y
T
私はカーブ フィッティングを手動で行った経験があまりなく、基本的な scipy 関数に簡単にアクセスできない非常に粗雑な方法を使用する必要があります。私の基本的なアプローチは次のとおりです。
- の値を選択
*params
してモデルに適用する - 値の配列を取り、
t
それをモデルに入れて、次の配列を作成します。model(*params) = (x(*params),y(*params))
X
(データ値)を補間しmodel
て取得しますY_predicted
Y
との間の最小二乗 (またはその他の) 比較を実行します。Y_predicted
- 新しいセットのためにもう一度やり直してください
*params
- 最終的に、最適な値を選択します
*params
このアプローチにはいくつかの明らかな問題があります。
1) 私は、「ソリューション空間ですべてを試す」以外の非常に優れた「やり直す」、おそらく「粗いグリッドですべてを試す」、「少しの間すべてをもう一度試す」を開発するためのコーディングの経験が十分ではありません。粗いグリッドのホットスポットにあるより細かいグリッド。」MCMC法をやってみましたが、主に問題2が原因で、最適な値が見つかりませんでした
2) ステップ 2 ~ 4 は、それ自体が非常に非効率的です。
私は次のようなことを試しました(疑似コードに似ています。実際の機能は構成されています)。A、B でブロードキャストを使用することについては、多くの小さな問題がありますが、それらは、すべてのステップで補間する必要があるという問題ほど重要ではありません。
私が知っている人は、ある種の期待値最大化アルゴリズムを使用することを推奨していますが、ゼロからコードを作成するのに十分な知識はありません。問題全体をカバーする素晴らしい scipy (またはオープンソース) アルゴリズムが見つからないことを本当に望んでいますが、現時点では期待できません。
c++ - 等間隔の勾配をもつ線分へのベジエ曲線の分解
私は現在、レース トラックのスケール SVG ファイルを取得し、データを使用してトラックをポイントの配列として近似するプログラムに取り組んでいます。理想的には、任意の 2 つの連続するポイント間の勾配の絶対値が同一であることが望ましいです。これにより、角度、弧の長さ、および半径を既知の精度に近似して、曲線の周囲の最大速度を計算する際に使用できるからです。
SVG は、2 つの制御点によるベジエ近似を使用します。始点、2 つの制御点、終点、およびパラメトリック変数 t を取る関数があります。ここでコードを見つけました: Drawing Bezier curve using De Casteljau Algorithm in C++ , OpenGL
私が望む結果は、ストレートは非常に少ない線分で構成され (勾配の変化はほとんどありません)、急なターンは多くの線分で構成されます (勾配が急激に変化します)。これにより、計算の精度が一定に保たれます。
t に一定のステップを使用しても、2 点間の勾配が一定にならないため、計算上の大きな問題になります。結果の線分の望ましい勾配を知っている正しい t 値を見つける方法はありますか?
javascript - 三角ストリップで球をレンダリングする方法
私は現在、シェイプ WebGL (具体的にはこの場合は球体) のレンダリングに関するこのチュートリアルを進めており、球体上の各ポイントの生成の背後にある数学を理解しています。ただし、チュートリアルでは、作成者はすべての頂点を見つける方法と、球体を構成するすべての正方形を生成する方法を定義しています。
チュートリアルで行われていることから、いくつかのことが不明です。まず、パラメトリック方程式によって生成された頂点が、生成されている正方形 (三角形のストリップ) にどの程度正確に接続されているか? 生成された頂点を使用するだけで同じことを行う前に、単純な javascript と HTML5 で必要最小限のプログラムを作成したので、三角形ストリップと組み合わせて使用する必要がある方法と理由がわかりません。もう 1 つの混乱点は、特に正方形を生成する関数に関するものです。
各正方形の最初の点 (左上隅の点) を生成するには、次のようにします。 var first = (latNumber * (longitudeBands + 1)) + longNumber;
各ステップで緯度線の数に経度線の総数を掛ける必要がある理由がわかりません (完全に折り返すには 1 を加えます)。
両方の関数のコードは、チュートリアルの下部にあります。このような場合のトライアングル ストリップの使用に関する一般的な説明も参考になります。
r - 方程式の発見に rgp symbolicRegression を使用する R
方程式の発見に rgp パッケージを使用しようとしています
ただし、エラー メッセージが表示され続けます。上記のエラーを指摘していただけると助かります。
有用なリファレンス (R にこれがあると便利です):
c++ - 3D 円のパラメトリック方程式を使用してベクトルを回転させる
以下のコードでは、必要な出力、つまり x2、y2、z2 が得られません。ここで、角度 t は度単位で、(x2,y2,z2) は回転後のベクトル面のパイントであり、(a2,b2,c2) は回転したベクトルの方向余弦です。回転ベクトルを視覚化するために rviz を使用しましたが、思ったように来ない、つまり回転しない。
math - ベジエ曲線を近似する線を均等化する
t が [0..1] の間隔で定義される 3 次ベジエ曲線がf(t)
あり、p という配列で表される n + 1 頂点ポリラインでベジエ曲線を近似しました。各頂点は p[i] です。 i in 0..n、ここで p[i] = f(i / n)
ただし、ポリライン内のポイントは、実際には互いに同じ距離ではありません。p[i] と p[i+1] の間の距離は、曲線の長さによって異なります。p のすべての点間の距離を同じにしたい。
どうすればいいですか?