問題タブ [splines]

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 投票する
9 に答える
3066 参照

math - ポイントシーケンス補間

空間内の任意のポイントのシーケンスが与えられた場合、それらの間でスムーズな連続補間をどのように生成しますか?

2Dおよび3Dソリューションは大歓迎です。任意の粒度でポイントのリストを生成するソリューション、およびベジェ曲線の制御ポイントを生成するソリューションも高く評価されています。

また、ポイントを受け取ったときに曲線の初期セクションを近似できる反復解を見ると、それを使って描画できるので便利です。

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

.net - Reporting Servicesの線グラフ:平滑化された曲線をより適切に制御する方法

x 0-100、y0-100をプロットする必要があるクライアント用に作成したレポートがあります。私がこれらのポイントを持っていると想像してみましょう:

これらのアプリケーションは印刷機のドットゲイングラフであるため、これらを滑らかな折れ線グラフとして表す必要があります。

ここに問題があります。線は100,100(右上)から2,24まで細かく描画されます。しかし、その後、2,24から0,0まで、線はグラフの左側から曲線を描き、次に0,0まで下がっていきます。-10,10にポイントを置くことを想像してみてください。

これは、使用している一般的なベジェ曲線アルゴリズムと、制御点の間隔が大きいため、重みが大きくなっているためだと理解しています。

しかし、誰かが私がそれを制御できる方法を知っているかどうか疑問に思いました。既存のコントロールポイントの間に平均化されたポイントを追加しようとしましたが、それでもグラフからはかなり重み付けされているかのようにカーブしています。

私が考えることができる他の唯一の答えは、グラフをカスタム描画するか、Dundasチャートを調べて、そのGDI+描画サポートを使用することです。

しかし、私がそのルートに行く前に、誰かが何か考えを持っていますか?


つまりね。手動で曲線を描く方法を知っています。問題は、2から50の間に非常に高い重みがあるという事実にあります。私は低域と中域にポイントを追加しようとしましたが、それでもエッジから曲がっていました。ソースをチェックしてグラフを修正し直し、スクリーンショットを取得できるかどうかを確認する必要があります。

今のところ、これを解決できるまで、グラフを2で停止しています。

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

c - コンター スプラインで構築されたシェイプを単純なポリゴンに変換する

truetype ファイルからグリフをダンプしたので、それらで遊ぶことができます。それらは、二次ベジエ曲線と線から構成される形状の輪郭を持っています。このような形状の三角形を出力して、ユーザーのために視覚化できるようにしたいと考えています。

伝統的に、libfreetype を使用するか、この種の輪郭をスキャン ラスタライズします。しかし、フォントから押し出された 3D メッシュを生成し、それらを使って他の歪みを作りたいと思っています。

では、二次ベジエ曲線と直線からなる形状を多角形化するにはどうすればよいでしょうか? 一緒に形を形成する多くの輪郭があります。一部の等高線は加算的であり、その他は減算的です。輪郭が開くことはありません。それらはループを形成します。

(実際には、ttf グリフから輪郭の頂点のみを取得します。これらの頂点は、それらが曲線の一部であるかどうかを定義します。これらをベジエ曲線と線に分解するのは簡単ですが、データがこのように表現されていることを知っていると、輪郭を三角形にポリゴン化する)

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

algorithm - エイリアス化された、ピクセルパーフェクトな 1px スプラインの描画 (具体的には Catmull-Rom)

簡単な背景: Web ベースの描画アプリケーションに取り組んでおり、制御点を通過する 1 ピクセルの太いスプラインを描画する必要があります。

私が苦労している問題は、1 ピクセルの鉛筆ツールを使用しているかのように、p1 と p2 の間の各ピクセルを描画する必要があることです。したがって、アンチエイリアシングはなく、一度に 1 ピクセルずつです。これは、ライン/カーブ ライブラリ コードを使用せずに手動で行う必要があります。私のブラシ システムは、キャンバスにブラシ チップを適用するためのピクセル座標に依存しているためです。

基本的に、Bresenham アルゴリズムなどからの 1 ピクセルのステッピングと、Catmull-Rom 方程式によって返される座標を組み合わせる必要があります。Catmull-Rom ポイントが均一に分布していないため、問題が発生しています (したがって、曲線に 100 ピクセルが必要で、方程式を 100 回実行する必要があるとは言えません)。X デルタと Y デルタの最大値の推定開始値を使用し、ギャップを Bresenham で埋めようとしましたが、丸めにより、依然としていくつかの「ダーティ」なセクションが残ります (つまり、ラインは明らかに上に移動し、正しいですが、同じ Y コンポーネントを持つ 2 つのピクセルを取得するため、線の「太い」セクションになります)。

スプラインを描画するほぼすべてのグラフィックス プログラムが、私が求めているきれいなピクセル曲線をサポートする必要があるため、これは解決されたと確信しています。しかし、かなりの数学研究の後、私は少し混乱しており、まだ解決策がありません. 何かアドバイス?

編集:これは、レンダリングする必要があるかもしれない曲線の例です:

代替テキスト

次のような予想される結果が得られる可能性があります (これは推定値であることに注意してください)。

代替テキスト

Catmull-Rom スプライン方程式を使用すると、セグメントを作成するために 4 つのポイントが必要になります。P0 と P3 は、P1->P2 セグメントからの着信方向と発信方向の接線として使用されます。Catmull-Rom スプラインでは、t が 0 から 1 に移動するときに補間されるのは青色のセクションだけです。P0 と P3 を複製して、緑色の部分が確実にレンダリングされるようにすることができるので、それは私にとっては問題ではありません。

簡単にするために、接線が P0 と P3 の形式であるとすると、P1 と P2 の間の曲線上のピクセルをレンダリングする必要があります。必ずしも Catmull-Rom スプラインを使用する必要はありませんが、制御点を通過する必要があるこのジョブには適切なツールのようです。補間ポイントの不均一な分布が原因で、私はループに陥っています。

EDIT2:結果の曲線が汚いと言うときの意味の例を次に示します。

代替テキスト

赤い矢印は、ピクセルがあってはならないいくつかの場所を示しています。これは、計算される座標の X 成分と Y 成分が同じ割合で変化しないために発生します。したがって、各コンポーネントが丸められると (正確なピクセル位置が得られます)、計算された座標が (42.4999, 50.98) であるため、X または Y のいずれかが増加しない場合があります。ラウンドを床または天井に交換しても、発生する場所が変わるだけなので、問題は解決しません。

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

r - ggplot2でスプラインをプロットする方法は?

ヒストグラムを作成したいデータがいくつかあります。ただし、このヒストグラムを線で表現したいと思います。のを使ってみfreq_polyましたggplot2。ただし、生成される線はかなりギザギザです。で生成されるラインがよりスムーズになるように、 splineswithを使用できるかどうかを知りたいです。ggplot2freq_poly

これが私が達成したいことです。しかし、私はそれを使用してやりたいですggplot2

0 投票する
4 に答える
8421 参照

python - パラメータに関係なくscipy.interpolate.UnivariateSplineが平滑化されない

補間時に scipy.interpolate.UnivariateSpline でスムージングを使用するのに問題があります。関数のページ以前の投稿に基づいて、パラメーターで平滑化を提供する必要があると思いsます。

これが私のコードです:

結果は次のとおりです。

スムージングなしのスプライン

s値の範囲 (0.01、0.1、1、2、5、50) と明示的な重みを同じもの (1.0) に設定するかランダム化して、これを試しました。私はまだ平滑化を行うことができず、ノットの数は常にデータ ポイントの数と同じです。特に、平滑化される 4 番目のポイント (7990.4664106277542、5851.6866463790966) のような外れ値を探しています。

十分なデータがないからですか?もしそうなら、このいくつかのデータポイントで平滑化を達成するために適用できる同様のスプライン関数またはクラスター手法はありますか?

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

r - ns オブジェクトからノットを抽出する

このスパイン オブジェクトのどこにノットがあるかを知るにはどうすればよいですか?

str必要なものに近づきますが、スプラインのベクトルを抽出し、フォーマットして、Sweave ドキュメントに印刷できるようにしたいと考えています。

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

r - R:RCRANアーカイブ(スプライン)でアーカイブされたパッケージを見つける

「スプライン」パッケージを探していますが、もう存在しないようです。誰かがrcranアーカイブでそれを見つけることができると私に言いました-誰かがそれをする方法を知っていますか?

ありがとう〜

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

graph - Graphviz splines=false は、双方向の a -- b/b -- a エッジを持つ無向グラフには影響しません

Graphviz を使用して、冗長なエッジを持つ無向グラフを描画しています (例: A -- B および B -- A)。データに冗長な逆エッジがあるかどうかに関係なく、2 つの頂点間に 1 本の線だけを表示したいと考えています。私の質問は、最初に他のツール/コードを使用して冗長なエッジを削除することなく、Graphviz でこれを行う方法はありますか? 私はgraph [splines=false];成功せずに試しました。以下は最小限の例です。

そして出力:

ここに画像の説明を入力

私が出力として欲しいのは:

ここに画像の説明を入力

指定されたグラフに存在する可能性のある冗長なエッジにもかかわらず。