問題タブ [pathgeometry]

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

java - 自己交差したPath2Dをいくつかの自己交差していないパスに分割するアルゴリズム?

シェイプ内の自己交差を取り除く必要があります。形状は点の配列から構成されるため、その形状のすべてのセグメントは線です。(直線のみ、曲線と円弧なし)

以前、そのポイントから Path2D を作成し、そこから Area を構築しようとしました。次に、その PathIterator を使用して、前のパスのサブパスであるいくつかの Path2D を作成したため、自己交差がなくなりました。しかし、これは一部のパスでは機能しません。自己交差はまだ残っています。

では、同様のことを行うための優れたアルゴリズムを見つけることができる場所を教えていただけますか?

編集:どこにも役立つものが見つからなかったので、独自のアルゴリズムを作成しました。答えを見てください。

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

wpf - プログラムでパスを複数のパスに分割する

私は動的に生成されたパスを持っています。そのデータは で構成さPathGeometryれていPathFigureます。これPathFigureには、一連の線分が含まれています。したがって、パス全体は連続しており、直線で構成されています。このパスを多くの異なる小さなパスに分割するための良いアプローチは何ですか? 興味があれば、これを行う必要がある理由は、「パスがフェードアウトする」効果を達成するためであり、これを行う別の方法はないようです。

そこで、パスを取り、それを多くの異なる小さなパスに分割し、最初の小さなパスの不透明度を 0 に設定し、最後の小さなパスの不透明度を 1 に設定し、その間のすべてを補間します。また、これを使用してパスのテールを小さくし、パスの先頭まで補間することができます。これは大きいです。多くの用途があります - 私のアプリケーションでこれを行う方法が必要です。

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

wpf - Path Mini-language (Silverlight/WPF) の PathFigure の IsFilled="false" と同等

IsFilled="False"PathGeometry で使用されているのと同等のものを見つけようとしていますが、 Path Mini用です。

左がPath Mini、右がPathGeometry

IsFilled="False"以下の 2 つのパスは、2 番目の にあるジオメトリを除いて同一であることがわかります<PathGeometry>.<PathGeometry.Figures>.<PathFigure>。これは望ましい動作ですが、パス ミニ (つまり、最初の ) に使用したいと思い<Path>ます。ドキュメントに目を通しましたが、Path Mini は図のコレクションではないように見えるため、何も見つけられないようです。

私が理解しているように、すべての形状/ジオメトリは実行時にパス ミニに変換されるため、コンパイルされた XAML を反映して、インタープリターが PathGeometry を使用してパス ミニにレンダリングする方法を確認する方法はありますか?

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

wpf - ArcSegmentの回転と方向

ArcSegmentを特定の方向に描画する方法はありますか?私の知る限り、それは常に上から下へと上へと描かれています。たとえば、 180度(北は270度)から始まり、180度までほぼ楕円を描くArcSegmentがあります。今、図面は時計回りに進んでいます....まあ、すみません、お見せしましょう。

もの

左側の値は、値の変換セットから受け取る値ですが、右側の値のように機能する必要があります。

をいじってみましRotationAngleたが、Y軸ではな​​く、X軸でしか機能しないため、効果がないようです。

最初のパスの値は変換ルーチンから取得されるため、簡単に変更できるわけではありません。

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

c# - C#/WPF で PathGeometry (行) の長さを取得する

パスが閉じている場合は、 を使用Geometry.GetArea()してシェイプの領域を概算できます。これは素晴らしいことで、多くの時間を節約できます。しかし、閉じられていないパスの長さを見つけるのに役立つものはありますか?

今のところ私が思いついた最善の方法は、メソッドを複数回使用PathGeometryして呼び出し、GetPointAtFractionLengthポイントを取得し、それらすべてのポイント間の距離を合計することです。

コード:

使用法 (XAML):

使用法 (コード):

double length = LengthOfPathGeometry(Bob, 10000);

この例では、返される結果はおよそ 1324.37 になるはずです。

これはうまくいくように見えますが、欠点があります。非常に大きな行でより正確な数値が必要な場合は、さらに多くの手順が必要です。また、100000 歩を超えると、概算に時間がかかります。テスト マシンでのメソッド呼び出しごとに数秒。

任意の形状の線の長さを近似するより良い方法を知っている人はいますか?

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

wpf - PathGeometry を使用した WPF リアルタイム チャートのパフォーマンス

1ミリ秒ごとのリアルタイムデータを処理できるチャートを実装しようとしています。50 ミリ秒のデータをポーリングして、1 ミリ秒ごとに画面を再描画しようとしないようにします。Canvas で PathGeometry を使用して線分を追加しています。再描画がますます遅くなるにつれて、フレームレートが着実に下方にカチカチ音をたてるのを常に見ています。約 10,000 ポイントの Line をコンピューターでレンダリングするのがこれほど難しいとは思いませんでした。私が間違っていることはありますか?それとも、WPF でのリアルタイム データの処理により適した他の設計哲学はありますか?

ViewModel には次のものがあります。

ビューで、このコレクションが変更されるのを聞いて、線分を追加します。

シミュレーションの目的で、BackgroundWorker を使用してポイントを注入しています。

スローダウンに加えて、UI が応答しなくなることもあります。ReportProgress の呼び出しが多すぎてメッセージ ポンプがいっぱいになっているためだと考えましたが、遅いレンダリングを解決できれば、この他の問題も解消されると思います。私はどんな提案にもオープンです!

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

geometry - 任意のポリゴンで、任意の辺が別の辺と交差しないことをどのように検出しますか?

巡回セールスマン問題のポリゴンを描画しています。遺伝子検索を適応的に停止する手段として、パスが交差していないかどうかをテストしたいと思います。線分や交差点を確認してみましたが、交差点が1つ以上残っていても、間違った結果が出て検索が終了することがあります。

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

database - 幾何学的パスデータを保存およびクエリするための優れたデータベース/アプローチは何ですか

私はブロブ(人)を追跡するプロジェクトに取り組んでいます。彼らのxy位置を追跡し、これを通過したパスの表現に変換し、「どのパスがポイント(a、b)の近くにあるか」や「どのパスが(0、b)から始まったか」などを返すクエリを実行します。または、「半径rの(a、b)を中心とする円に入るパス」など。

私はグーグルで調べて、PostGISやSpatiaLiteのようなGIS実装を見てきました。私が調べることができる他の「ネームドロップ」、またはあなたのためにうまくいった特定のソリューションでの個人的な経験を探しています。

編集:芸術的なアプリケーションをコーディングするために設計されたc++ベースのライブラリであるopenFrameworksを使用してコーディングしていることに言及するのは適切かもしれません。プロジェクターとカメラのセットアップを使用して、インタラクティブなアプリケーションをフロアスペースに投影するセットアップを使用しています。私の作業環境は、Windowsのcode::blocksです。openframeworksで働いたことがある人からの回答はプラスです!

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

wpf - GetPointAtFractionLength - パスが正しいかどうかを確認する方法

のオブジェクトの有効性を確認する方法があるかどうか疑問に思っていましたPathGeometry

パスのポイントを取得するために使用する必要がありますGetPointAtFractionLengthが、一部のパスでは、この関数は例外をスローします。

Value does not fall within the expected range.