問題タブ [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.

0 投票する
1 に答える
2531 参照

python - Python でのパラメトリック カーブのフィッティング

フォームの実験データとフォーム(X,Y)の理論モデルがあり、(x(t;*params),y(t;*params))t物理的 (ただし観測不可能) 変数であり、*params決定したいパラメーターです。は連続変数であり、モデル内のとと の間に と の間tに 1:1 の関係があります。xtyt

完璧な世界では、(パラメーターの実際の値) の値を知ってTいて、非常に基本的な最小二乗法を実行して の値を見つけることができます*params。( 3124300231464345のように、プロット内のとの値を「接続」しようとしているわけではないことに注意してください。)データは複数のサイクルにわたって収集されるため、実際のデータでは潜在値が単調であることを保証できません。xyT

私はカーブ フィッティングを手動で行った経験があまりなく、基本的な scipy 関数に簡単にアクセスできない非常に粗雑な方法を使用する必要があります。私の基本的なアプローチは次のとおりです。

  1. の値を選択*paramsしてモデルに適用する
  2. 値の配列を取り、tそれをモデルに入れて、次の配列を作成します。model(*params) = (x(*params),y(*params))
  3. X(データ値)を補間しmodelて取得しますY_predicted
  4. Yとの間の最小二乗 (またはその他の) 比較を実行します。Y_predicted
  5. 新しいセットのためにもう一度やり直してください*params
  6. 最終的に、最適な値を選択します*params

このアプローチにはいくつかの明らかな問題があります。

1) 私は、「ソリューション空間ですべてを試す」以外の非常に優れた「やり直す」、おそらく「粗いグリッドですべてを試す」、「少しの間すべてをもう一度試す」を開発するためのコーディングの経験が十分ではありません。粗いグリッドのホットスポットにあるより細かいグリッド。」MCMC法をやってみましたが、主に問題2が原因で、最適な値が見つかりませんでした

2) ステップ 2 ~ 4 は、それ自体が非常に非効率的です。

私は次のようなことを試しました(疑似コードに似ています。実際の機能は構成されています)。A、B でブロードキャストを使用することについては、多くの小さな問題がありますが、それらは、すべてのステップで補間する必要があるという問題ほど重要ではありません。

私が知っている人は、ある種の期待値最大化アルゴリズムを使用することを推奨していますが、ゼロからコードを作成するのに十分な知識はありません。問題全体をカバーする素晴らしい scipy (またはオープンソース) アルゴリズムが見つからないことを本当に望んでいますが、現時点では期待できません。

0 投票する
1 に答える
1609 参照

c++ - 等間隔の勾配をもつ線分へのベジエ曲線の分解

私は現在、レース トラックのスケール SVG ファイルを取得し、データを使用してトラックをポイントの配列として近似するプログラムに取り組んでいます。理想的には、任意の 2 つの連続するポイント間の勾配の絶対値が同一であることが望ましいです。これにより、角度、弧の長さ、および半径を既知の精度に近似して、曲線の周囲の最大速度を計算する際に使用できるからです。

SVG は、2 つの制御点によるベジエ近似を使用します。始点、2 つの制御点、終点、およびパラメトリック変数 t を取る関数があります。ここでコードを見つけました: Drawing Bezier curve using De Casteljau Algorithm in C++ , OpenGL

私が望む結果は、ストレートは非常に少ない線分で構成され (勾配の変化はほとんどありません)、急なターンは多くの線分で構成されます (勾配が急激に変化します)。これにより、計算の精度が一定に保たれます。

t に一定のステップを使用しても、2 点間の勾配が一定にならないため、計算上の大きな問題になります。結果の線分の望ましい勾配を知っている正しい t 値を見つける方法はありますか?

0 投票する
1 に答える
876 参照

javascript - 三角ストリップで球をレンダリングする方法

私は現在、シェイプ WebGL (具体的にはこの場合は球体) のレンダリングに関するこのチュートリアルを進めており、球体上の各ポイントの生成の背後にある数学を理解しています。ただし、チュートリアルでは、作成者はすべての頂点を見つける方法と、球体を構成するすべての正方形を生成する方法を定義しています。

チュートリアルで行われていることから、いくつかのことが不明です。まず、パラメトリック方程式によって生成された頂点が、生成されている正方形 (三角形のストリップ) にどの程度正確に接続されているか? 生成された頂点を使用するだけで同じことを行う前に、単純な javascript と HTML5 で必要最小限のプログラムを作成したので、三角形ストリップと組み合わせて使用​​する必要がある方法と理由がわかりません。もう 1 つの混乱点は、特に正方形を生成する関数に関するものです。

各正方形の最初の点 (左上隅の点) を生成するには、次のようにします。 var first = (latNumber * (longitudeBands + 1)) + longNumber;

各ステップで緯度線の数に経度線の総数を掛ける必要がある理由がわかりません (完全に折り返すには 1 を加えます)。

両方の関数のコードは、チュートリアルの下部にあります。このような場合のトライアングル ストリップの使用に関する一般的な説明も参考になります。

0 投票する
1 に答える
122 参照

r - 方程式の発見に rgp symbolicRegression を使用する R

方程式の発見に rgp パッケージを使用しようとしています

ただし、エラー メッセージが表示され続けます。上記のエラーを指摘していただけると助かります。

有用なリファレンス (R にこれがあると便利です):

https://www.researchgate.net/publication/237050734_Improving_Genetic_Programming_Based_Symbolic_Regression_Using_Deterministic_Machine_Learning

0 投票する
1 に答える
758 参照

ios - この複雑なパラメトリック方程式を使用して iOS で曲線を描く方法

iOSでパラメトリック方程式の描画を使用するためのこのデモコードを見つけました ここに画像の説明を入力

キーコードがこの点の配列を生成することであることがわかります

この方程式を使用しているだけです
ここに画像の説明を入力

今私が描きたいのはより複雑な 1 つのmao 曲線です

ここに画像の説明を入力

しかし、私が遭遇する問題は、サイトが提供するパラメトリック方程式に数学記号があり、iOS コードに変換する方法がわからないことです。
ここに画像の説明を入力

更新:今、私は新しい問題に遭遇しました:「式が複雑すぎて妥当な時間内に解決できませんでした」、y上記のハートカーブのように小さな式に分割する以外のアイデアは、手動で分割すると圧倒的すぎるためです

ここに画像の説明を入力

コード全体は以下のリストです

0 投票する
1 に答える
360 参照

c++ - 3D 円のパラメトリック方程式を使用してベクトルを回転させる

以下のコードでは、必要な出力、つまり x2、y2、z2 が得られません。ここで、角度 t は度単位で、(x2,y2,z2) は回転後のベクトル面のパイントであり、(a2,b2,c2) は回転したベクトルの方向余弦です。回転ベクトルを視覚化するために rviz を使用しましたが、思ったように来ない、つまり回転しない。

0 投票する
0 に答える
57 参照

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 のすべての点間の距離を同じにしたい。

どうすればいいですか?