問題タブ [spline]
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.
apache-flex - 一度に与えられた3点から連続した曲線を描く方法
フラッシュで連続曲線を描こうとしています。多くの方法がありますが、これまでのところ、私の要件に完全に適合するものはありませんでした。まず、Flash グラフィック API の curveTo() メソッドを使いたいと思います。 曲線セグメントごとに lineTo() を何百回も呼び出す曲線をシミュレートしたくありません。 ライン セグメントはプロセッサ負荷が高いというのが私の経験と理解です。Flash の 2 次ベジエ カーブは、CPU パワーをあまり消費しないはずです。私が間違っていると思われる場合は、この仮定に異議を唱えてください。
また、行全体を引数として取る既製のメソッド (mx.charts.chartClasses.GraphicsUtilities.drawPolyline() など) も使用したくありません。その理由は、描いている線に装飾を加えるために最終的にロジックを変更する必要があるためです。そのため、最低レベルの理解が必要です。
私は現在、ここにある中間点法を使用して、 3 点を指定して曲線を描く方法を作成しました。
ここに写真があります:
問題は、線が実際には線の「実際の」点 (灰色の円) を通って曲がっていないことです。曲線が実際に「実際の」点を通過するように制御点を調整できる数学の力を使用する方法はありますか? 現在のポイントとその前/次のポイントのみを引数として指定しますか? 上の図を複製するコードは次のとおりです。この要件を満たすように変更できれば素晴らしいと思います (最初と最後のポイントの例外に注意してください)。
後で draw メソッドに矢印などを追加します。
image - 画像ワープフィルター-アルゴリズムとラスタライズ
エッジと接線方向をマークするいくつかのコントロールポイントを移動することで画像のリサンプリングを可能にするフィルターを実装したいと思います。目標は、「フリートランスフォーム」を使用してワープモード「カスタム」を選択したときに、Photoshopで見られるように画像を自由にトランスフォームできるようにすることです。画像は、操作可能なある種のスプラインパッチ(有効な名前の場合)に適合します。
単純なスプライン(パス)がどのように機能するかは理解していますが、それらを接続してパッチを形成するにはどうすればよいですか?そして、どのようにしてそのようなパッチをサンプリングして、モーフィングされた画像をレンダリングできますか?ターゲットの各ピクセルについて、ソース画像のどのピクセルが対応しているかを知る必要があります。どこから検索を始めたらいいのかわからない...
役立つ情報(キーワード、リンク、論文、リファレンス実装)は大歓迎です!
algorithm - 連続スプラインの作成 / スプライン間のスムーズな移行
定義された一連の点 (数万点) からスプラインを作成するプロジェクトに取り組んでいます。
最初に最初の 1000 ポイントのスプラインを作成し、そのパスを矢印で「駆動」することをシミュレートします (接線とスプライン上の現在のポイントを使用して描画されます)。パスの終わりに近づいたら、次の 1000 ポイントを取得して新しいスプラインを作成し、「運転」を続けます。
私が抱えている問題は、スプライン (前のスプラインと現在のスプライン) が最後に一致しないという事実です。一致しないということは、それらが同じ接線を持たず (一次微分が一致しない)、前のスプラインの最後の点と新しいスプラインの最初の点の間に違いがあることを意味します (これは、私が使用していないためです補間スプラインだが滑らかなスプライン - 以下の注 1 を参照)。これにより、新しく作成されたスプラインに切り替えると、スプラインの最後で矢印が「ジャンプ」します。
注1:補間スプラインは使用していません。滑らかなスプラインを使用しています。詳細については、こちらとこちらを参照してください。これは、入力として与えられた点のセットが結果のスプライン上にない可能性があることを意味します (私の場合、それらはスプラインに非常に近いですが、通常はスプライン上にはありません)。
注2:スプラインの計算に使用されるデータには多くのノイズがあるため、補間スプラインを使用することは問題外です。
注 3 : ポイント セット全体のスプラインを計算するには、2 GB RAM を搭載した 3Ghz PC (アプリケーションのターゲット プラットフォーム) で長時間 (30 秒以上) かかります。したがって、これを行うことも問題外です。
スプラインを切り替えるときの不要な「ジャンプ」を克服したいと思います。
だから私の質問は:
- 新しいスプラインへのスムーズな「ジャンプ」/移行を行うための方法/アルゴリズムはありますか?
- これを克服するために、特別なタイプのスプラインで何かをすることはできますか? (これは私がこれまでに試したもので、かなりの改善はありません)。
アイデアをありがとう、
イウリアン
c++ - ウィンドウの残りの部分をすべて削除することなく、Bスプラインを再描画する必要があります
私の mousefunc では、関数 bspline を呼び出します。これは次のように動作します: マウスを使って制御点を配置すると、これらの点に従って B スプラインが描画されます。したがって、3 つの点を描画すると、それらの点の間の曲線が表示されます。別のポイントを追加すると、古い曲線が消え、新しい曲線が現れます。この新しいものは現在、4 つの点の間にあります。これは問題なく動作します。BUT: この bspline 曲線は 1 つのビューポートにのみ表示されます。このビューポートには黒い境界線があります。この境界線は、bspline が再描画されると消えます。これは、glutPostredisplay を呼び出すために発生します。私のglutDisplayFuncでは、glClear(GL_COLOR_BUFFER_BIT)を呼び出すためです。ですから、起こるのは当然のことです。displayfunc で glClear(GL_COLOR_BUFFER_BIT) を削除すると、境界線は残りますが、古い曲線も残ります。ボーダーを再描画する必要があると言っても、何も起こりません。代替案が思いつきません。助けていただければ幸いです...
ios - iOS。UIView 属性をキーフレーム化する方法を見つけた人はいますか?
iOS に欠けているものの 1 つは、属性にキーを設定し、スプラインを使用してそれらの間を補間する機能です。誰かがこれについて考えたり、これを回避するためのアプローチを見つけたりしましたか? みんなこういうのにCocos2d使ってるの?Cocos2d は必要以上の機能を備えていますか?
ありがとう、
ダグ
c++ - 滑らかな線を作成して、3次元でN点を結合します
3次元空間にN点あります。線を使って結合する必要があります。しかし、単純な線を使ってそれを行うと、滑らかではなく、見苦しく見えます。
私の現在のアプローチは、ベジェ曲線を使用し、4ポイントにDeCasteljauアルゴリズムを使用し、データセット内の4ポイントの各グループに対してそれを実行することです。ただし、これに伴う問題は、ポイント1〜4、5〜8、9〜12などで個別に実行するため、4〜5、8〜9などの間で線が滑らかにならないことです。
他のアプローチも探しました。具体的には、Catmull-Romスプラインに関するこの記事を見つけました。これは、ベジェ曲線とは異なり、曲線がすべての制御点を通過するため、私の目的にさらに適しているようです。それで私はほとんどそれを実装し始めました、しかしそれから、私はその式がうまくいくのをそのサイトで見ました"assuming uniform spacing of control points"
。それは私の問題には当てはまりません。
だから、私の質問は、どのアプローチを使用する必要があるかということです-ベジェ、キャットマルロム、または完全に異なるもの?ベジェの場合、4-5、8-9などの間の滑らかさを修正する方法は?Catmull-Romの場合、ポイントが等間隔に配置されていないと数式が機能しないのはなぜですか。代わりに何が必要ですか。
編集: Catmull-Romスプラインが必要だと確信しています。これは、アプリケーションにとって有利なすべてのコントロールポイントを通過するためです。したがって、私が答えたい主な質問は、私が提供したリンクの式が不均一な間隔のコントロールポイントで機能しないのはなぜですか?
ありがとう。
javascript - N>2のN点のセットを通る曲線を描く
JavascriptでN>2のN点をスムーズに曲線を描く必要があります。現在、html5キャンバスオブジェクト内でbezierCurveTo()を使用しています。私はこれを達成するための最良の方法を見つけるためにかなりの時間を費やしました。Catmull-RomSplinesは有望に聞こえますが、線として描く方法を知りません。したがって、ポリラインベジェ曲線が残り、すべての中間制御点を見つける必要があります。
かなりの数学を再学習するのに時間がかかりましたが、ここに部分的に機能する例があります。線が特に滑らかでない場合があり、特定のベクトルに対してコントロールポイントがオフになっているという問題があります。これが私の最初のmath.stackexchangeの質問で、コントロールポイントの計算の大部分を取得するように依頼しました。
Catmull-Romスプラインにもオープンですが、キャンバス上のラインに変換する方法については、いくつかの助けが必要です。私はこのリソースを見つけましたが、それを自分のニーズに適用することに再び迷いました。
上記のリンク例から作成された画像は、不良コントロールポイントを複製する方法を示しています。
よろしくお願いします!
scipy - scipy内挿の勾配を直接取得するには?
スカラー値の大きな 3D numpy 配列があります (必要に応じて「ボリューム」と呼んでください)。私は、一連の不規則な、前もって知られていないすべての非整数 xyz 座標で、滑らかなスカラー フィールドを補間したいと考えています。
これに対する Scipy のサポートは非常に優れています。
そして呼び出す
対象の (x,y,z) に対して、明らかに適切に動作する (滑らかななど) 補間値を取得します。
ここまでは順調ですね。ただし、私のアプリケーションでは、補間されたフィールドのローカル導関数も必要です。現在、私は中央差分によってこれらを取得しています。また、6 つの追加ポイントでボリュームをサンプリングし (これは少なくとも を 1 回呼び出すだけで実行できますmap_coordinates
)、たとえば から x 導関数を計算し(i(x+h,y,z)-i(x-h,y,z))/(2*h)
ます。(はい、追加のタップ数を 3 に減らして「片側」の違いを実行できることはわかっていますが、非対称性は私を悩ませます。)
私の本能は、勾配を取得するためのより直接的な方法があるはずですが、それを理解したり、Scipy 実装の内部で何が起こっているかを理解するのに十分なスプライン数学を (まだ) 知りません: scipy/scipy/ndimage/src/ni_interpolation.c
.
中央差分よりも「より直接的に」勾配を取得するより良い方法はありますか? できれば、Scipy の内部をハッキングするのではなく、既存の機能を使用してそれらを取得できるようにするものです。
cocoa - ココアの高次ベジェパス
任意の力でココアにベジェパスを作成する方法はありますか?たとえば、アプリの一部には、起伏のあるセルが必要です。そこで、10〜50の異なる点を使用して曲線を描き、ループを形成したいと思います。ポイントはランダムにうねります。ポイントをガイドとして使用するか、ポイントに基づいてガイドを外挿することで、ループを表すベジェパスを作成できると思いました。
ベジェパスを使用する必要がありますか?または、同様の効果をもたらす他のアルゴリズムはありますか?
r - ノット間で B スプラインを分離し、各ピースの適合度を比較します
私はいくつかの B スプライン回帰 (一次、シングル ノット、それほど複雑ではない) に取り組んでおり、内部ノットの前の部分と後の部分のパラメーター推定値を比較したいと考えています。
今、私はこのようなものを持っています:
次にfit
、切片推定と 2 セットのパラメータ推定があります。
これらの 2 つのパラメーター セットを互いに比較することに興味があります。bs
モデル オブジェクトを分割する方法や、これら 2 つのサブモデルを抽出する方法を知っている人はいますか? または、F 値を R の ap 値に変換して、これらのテストを手動で実行できるようにします。