問題タブ [bspline]

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 に答える
1119 参照

r - Rでの制約付き平滑化

いくつかのデータに基づいて連続曲線を生成したいのですが、曲線はいくつかの制約を満たす必要があります。

  1. 曲線のすべての値は区間[0,1]にあります。この間隔外の値は解釈できません。
  2. 正確な開始値と終了値を指定したい:f(1)= 1およびf(last)= 0
  3. f(x)の導関数は常に負または0です。

データポイントもこれらのルールに従います。

現在、私はfdaパッケージのsmooth.monotoneを使用して、create.bspline.basisで作成されたbsplineベースに適合しています。これは、ノット間の単調性を維持するのに最適ですが、結果の曲線は1より上と0より下で冒険しているように見えます。

カーブフィットが通過しなければならないポイント、またはカーブが離れることができない間隔を指定する方法はありますか?

0 投票する
2 に答える
6544 参照

opengl - OpenGLでのBスプライン曲線のレンダリング

私は、基本的にbスプライン曲線を描くための練習であるOpenGLプロジェクトに取り組んできました。私のプログラムはエラーを返しませんが、曲線は表示されません。

'coords'という名前の長さ13のコントロールポイントの配列(コントロールポイント自体はすべて画面に表示されます)が与えられた場合、これは私のコードです。

ここで、「NofU」はブレンディング関数を表します。

printステートメントを実行しようとすると、座標値がめちゃくちゃ大きいか小さいか、または0になってしまいます。

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

opengl - gluLookAtの問題

私はOpenGLでジェットコースターシミュレーターを作成しようとしてきました。このシミュレーターは、一連のgluLookAt呼び出しを使用して、カメラをジェットコースターに「乗せ」ます。コースター自体は、座標配列に制御点があるbスプライン曲線に基づいています。b0(u)、b1(u)などはb-スプライン曲線のブレンド関数であり、bprime0(u)などはそれらの導関数です。これが私のコードの関連部分です:

スペースバーは、2つの表示モードを切り替えることになっている「rotateCam」変数を切り替えます。1つはコースターの周りでカメラを一周し(「if」ステートメント)、もう1つはコースターに乗る(「else」ステートメント)。

これが重要です。旋回モードは正常に機能し、モード間の切り替えは正常に機能しますが、カメラは常に「ライド」モードで静止しています。printfステートメントは、x、xprime、y、yprimeなどがすべてタイマーティックごとに変化することを示していますが、カメラは移動しません。

さらにコードが必要な場合はお知らせください。

0 投票する
2 に答える
2926 参照

graphics - ベジェパッチはユタティーポットでどのように機能しますか?

このデータセットティーポットのみ)を使用してユタティーポットを描画するためのコードゴルフチャレンジを時期尚早に投稿しました。(改訂および投稿されたティーポットチャレンジ)しかし、少し例をまとめるためにデータを詳しく調べたとき、そのデータで何が起こっているのかわからないことに気づきました。2Dで実装されたdeCasteljauのベジェ曲線をよく理解しています。しかし、3Dの場合も同じように機能しますか?

はい!します!

データには、それぞれ16個の頂点を含むパッチが含まれています。これらがどのように配置されるかについての標準的な順序はありますか?そして、それらが2D曲線に対応している場合、4つのコーナーポイントは実際にサーフェスに接触し、残りの12はコントロールですよね?

はい!

私の「当初の計画」は、形状を長方形に単純化し、それらをキャンバスに投影し、光ベクトルに垂直なパッチの内積の大きさによって計算された灰色で塗りつぶされた形状を描画することでした。ここまで単純化すると、急須のように見えますか?認識可能な画像を実現するには、レイトレーシングを使用する必要がありますか?

それは主観的です。:-(

これはいくつかの質問のように見えるかもしれませんが、これらはすべてこの質問の側面です。「お願いします、親切にグル、いくつかのベジェパッチを教えてください。ティーポットを描くために何を知っておく必要がありますか?」


これが私がこれまでに書いたコードです。(このマトリックスライブラリを使用します:mat.ps

これが元のNewellTeapotデータセットです。

そして、これが私の見事に悪いイメージです:
頂点がどのように編成されているかわかりません。

更新:バグ修正。結局、それらは「通常」に配置されているのかもしれません。正しいコーナーを選択すると、少なくとも対称的な形状になります。
コーナーを見つけました。

更新:境界曲線の見栄えが良くなりました。
境界曲線

0 投票する
2 に答える
398 参照

cuda - 隣接要素を含む推力ベクトル変換

ベクトルがあり、CUDA と Thrust 変換を使用して次のことを実行したいと考えています。

これを正しく実装するにはどうすればよいですか? 私ができる 1 つの方法は、ベクトル w を持ち、thrust::transform を v に適用し、結果を w に保存することです。しかし、k は前もって不明であり、w1、w2、... を作成して多くの GPU メモリ スペースを浪費したくありません。できれば、データのコピー量を最小限に抑えたいと考えています。しかし、値が互いに踏み込まずに1つのベクトルを使用してこれを実装する方法がわかりません。これを行うことができるスラストが提供するものはありますか?

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

cuda - ベクトル要素の削除を含む推力ベクトル変換

スラストdevice_vectorを100のチャンクに分割しました(ただし、GPUメモリ上で完全に連続しています)。コピー先の新しいdevice_vectorを再割り当てせずに、各チャンクの最後の5つの要素を削除したいと思います。

どうすればこれを正しく実装できますか?できれば、変換を保存するためにGPUメモリに新しいベクトルを割り当てないようにします。このような操作を処理するためのスラストテンプレート関数があることは理解していますが、それらをつなぎ合わせるのに問題があります。これを行うことができるThrustが提供するものはありますか?

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

c++ - B スプライン上の点を見つけるための De Boors アルゴリズムの実装

私はこれに数週間取り組んできましたが、アルゴリズムを適切に機能させることができず、頭がいっぱいです。これが私が達成したことの図です:

ここに画像の説明を入力

すべてが機能していれば、最後に完全な円/楕円が期待できます。

サンプル ポイント (白) は、新しいコントロール ポイント (黄色) が追加されるたびに再計算されます。4 つのコントロール ポイントでは、すべてが完璧に見えます。1 番目のものの上に 5 番目を追加すると、問題ないように見えますが、6 番目では側面から外れ始め、7 番目では原点にジャンプします!

calculateWeightForPointI以下に、実際のアルゴリズムが含まれているコードを投稿します。参考までに、ここに私がフォローしようとしている情報があります。誰かが私を見てくれたら、とてもうれしいです。

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

python - pppack の Python ラッパー?

Web を広範囲に検索して pppack のラッパー特にbsplvb.fbsplvd.fのルーチンを見つけました。これらは b-スプラインとその導関数の基底を返します。私が見つけることができる唯一のリモート関連のものは、このSE_postです。

問題は、Python で pppack に使用できるラッパーはありますか?

私はscipy.signal.bsplineと scipy.iterpolate について知っています。どちらも私が探しているものを持っていません。少なくとも私が認識していることはありません。私は基本的に、特定のノット セットに対して b スプライン基底関数を生成し、それらを評価できるコードを探しています。

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

matlab - 2D 離散データ ポイント (等高線イメージのピクセル) への B スプライン フィッティング

画像から抽出された輪郭のピクセルを表す一連の順序付けられた離散データ ポイントに B スプラインを当てはめようとしています。

以下のコードは、いくつかの単純な形状では正常に機能しますが、他の形状では機能しません (例については、添付の画像を参照してください)。なぜこれが起こるのでしょうか? この問題にアプローチするより良い方法は何でしょうか?

私は微分幾何学にまったく慣れていません。洞察や情報に感謝します。ありがとう。

例

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

d3.js - D3「基本」曲線上の 3 つの既知の点から制御点を計算する式

D3.js補間を「基準」として設定した線生成関数によって生成された曲線があります。問題は、生成された線が、線生成関数に指定された最初と最後の点にのみ接触し、その間の点を通過しないことです。これらが曲線を生成するための制御点として扱われることは承知していますb-splineが、私が探しているのは、曲線がパス配列のすべての点を通過するように制御点を「投影」/計算する方法です。

私のアプリケーションのポイント間のこれらは、ユーザーがドラッグして曲線を操作できる「ハンドル」ポイントです。補間を「カーディナル」に設定すると、曲線はすべてのポイントを通過しますが、これは私が望むタイプの曲線ではありません。「基本」補間によって生成されるより滑らかな曲線が必要です。

これが私のラインジェネレーターコードです:

そして、これが問題を説明する写真です。

ここに画像の説明を入力

言い換えれば、私が持っている 3 つのポイントは、曲線の開始点と終了点、および「頂点」の点です (それが何と呼ばれているかはわかりませんが、曲線の「最も高い」点です)。 . したがって、図では、赤い点が頂点を表し、曲線はこの点を通過する必要があります。

この同じ問題を扱っているこの質問を見つけましたが、D3.js ではなく HTML 5 Canvas を使用しています。曲線の制御点を計算するためにここに示す式を適用しようとしましたが、最終的には次の結果になりました。

ここに画像の説明を入力

「ドラッグ ポイント」(赤い点) は曲線上ではなく下にあり、曲線をさらに外側にドラッグすると、点と曲線の間の距離が大きくなります。リンクされた質問の式が機能しなかった理由は、D3 曲線の式が であり、その質問で言及されているb-splineによって生成された曲線とは異なるためだと推測します。quadraticCurveTo(私はこれについて間違っているかもしれません...関連する数学について私が知っていることは危険です!)

私の質問は次のとおりD3です。「ベース」補間によって生成された曲線の式を知っている人はいますか? そして、私がリンクした質問で行われているのと同様に、曲線のコントロールポイントを計算するための式を導き出すのを手伝ってくれる人はいますか?