問題タブ [concave]
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.
c# - Direct3dで凹多角形を描画する効率的で簡単な方法はありますか
c#とdirectxを使用してポリゴンを描画しようとしています
私が得るのはファイルからのポイントの順序付きリストだけであり、3Dワールドでフラットポリゴンを描画する必要があります。
三角形のファンとdrawuserprimitivesを使用して、ポイントをロードし、凸形状を描画できます。
ポリゴンが非常に凹面である場合(これは明らかに不正確な結果につながります)。
この問題に取り組むのは私だけだとは想像できません(私はgfx /directxの新人です-私のバックグラウンドはgui\windowsアプリケーション開発です)。
誰かが私を助けるかもしれないリソース\チュートリアル\アルゴリズムに従う簡単なものに私を向けることができますか?
opengl - 凹面ポリゴン描画
OpenGL で複雑な凹面ポリゴンを描画するには、それを三角形にテッセレートするか、ステンシル バッファーを使用する方がよいでしょうか? ステンシル バッファは 1 つのフレームの場合は高速になると思いますが、ポリゴンが変更されない場合は、複数のフレームの場合は三角測量の方が適しています。ただし、実際に試したことがないのでわかりません。
3d - ポリゴン3Dの順序を決定します
ポリゴンを作成する3Dの頂点のリストがあります。私はそれを三角測量する必要があり、私はカッティングイヤーアルゴリズムを使用しています。私のポリゴンは非凸面なので、ポリゴンの凹面の角度を見つける必要があります。また、ポリゴンの方向がわからない(時計回りまたは反時計回り)
時計回りか反時計回りかを判断する方法を教えてもらえますか
ありがとうございました
polygon - 凹面のドロネー三角形分割から三角形を切り取るにはどうすればよいですか?
Delaunayを使用して凹多角形を三角形分割していますが、凹多角形が塗りつぶされています。ポリゴンの境界の外側にある三角形を自動的に削除するにはどうすればよいですか?
outline - 非凸多角形の多数の頂点セットが与えられた場合、どうすればエッジを見つけることができますか?
私は一連の頂点(Aと呼ばれる)を持っており、この境界頂点セットが形状の輪郭になるように、すべての境界頂点を見つけたいと考えています。
A の頂点の多くは形状の内側にあるため冗長です。これらの頂点を取り除きたいと思います。
私の質問は、頂点のエッジ (ポリゴン) を見つけるための最適なアルゴリズムに似ていますが、凸でないポリゴンの場合に機能する必要があります。
編集: 明確化: 下の画像は凹面ポリゴンです。これは、私が非凸で意味したものです。それに凸包アルゴリズムを実行すると、ポリゴンの凹面部分は保持されません(間違っていない限り)。
ポリゴンの内側と境界線上に一連の頂点があります: [[x1,y1], [x2,y2]...] 頂点が形状の境界線の輪郭だけになるように、セットを減らしたいと思います。
3d - 縮退したエッジのない凹状のポリゴン ライン クリッピング
私の問題に適した方法を見つけるために、最近インターネットを検索して調査しました。
問題:
方向のない無限の線に対して凹面ポリゴンをクリップします(実際には3Dの平面に対するポリゴンですが、問題は似ていると思います)。現在、私は Sutherland-Hodgman を使用していますが、結果のポリゴンには、縮退したエッジから作成されたゼロ領域の部分が含まれることがあり、穴を含むポリゴンもサポートされていません。
私の問題を解決できる最適なアルゴリズムは Weiler-Atherton アルゴリズムですが、これは時計回りのエッジを持つポリゴンに対してクリッピングするためのものであり、方向情報が欠落している無限の線 (3D 平面) しかありません。
質問:
私のニーズに合った凹面ポリゴンをクリップするアルゴリズムはありますか、またはこの場合に機能するように Weiler-Atherton アルゴリズムを変更する方法について誰か提案がありますか? より多くのケースをサポートするために一般化できることを示唆するWebページがありますが、私はそれを理解できません。
//英検よろしく
c++ - 凸形状から凹形状を形成する方法は?
SFML c++ ライブラリで凸形状しか形成できないというルールを回避しようとしています。
これを行うために、指定された頂点をテストすることを計画しています。凹型の場合は、頂点をグループに分割し、各グループの凹型をテストし、組み合わせたときに元の形状のように見える完全な凹型形状が得られるまで繰り返します。
私が知りたいのは...
形状の凹みをテストするための方程式は何ですか?それは何であり、どのように機能しますか?
凹形状の頂点を分割して、最終的に形状ができるだけ少ない凸形状から形成されるようにするにはどうすればよいですか?
私の目標を達成するためのベストプラクティスは何ですか?
ありがとう!
c++ - 凸状のピースから凹型の形状を形成する方法混乱
ねえ、私は以前の回答で、複数の凸型から凹型を作るために次のことをするように言われました:
凸包がない場合は、パッケージラッピングアルゴリズムを実行して、すべてのポイントを含む凸包を取得します(これも非常に高速です)。en.wikipedia.org/wiki/Gift_wrapping_algorithm
アルゴリズムの開始点として、境界上にある点を選択します。
次に、シェイプ上にあるが、凸状の境界上にはない次のポイントを繰り返します。見つかったら、開始点から見つかった非境界点までの頂点を使用して新しい形状を作成します。最後に、開始点を検出された境界外の点に設定します
再帰があなたの友達になりました。作成する新しいサブシェイプごとにまったく同じプロセスを実行します。
しかし、私は1つのことに混乱しています。連続する2つの頂点が境界外にある場合はどうしますか?最初の頂点に到達した後、スターターポイントをそれに接続しますが、もう一度イタリングを開始するとすぐに別のオフボーダーポイントに遭遇し、使用できる頂点はスターターポイントと新しいオフボーダーポイントの2つだけになります。私は何が欠けていますか?
私の問題を説明するために、この問題に関連する形を次に示します。誰かがその全体を描き、これを使用してアルゴリズムのステップをウォークスルーできれば素晴らしいと思います。そして、開始点としてポイント1を使用します。
ありがとう!
algorithm - 任意のポリゴンのスケーリング
私は何日もインターネットを精査してきましたが、よくある質問と思われるものに対する良い答え(または少なくとも私にとって意味のあるもの)を見つけることができませんでした。任意のポリゴンをどのようにスケーリングしますか?特に、凹多角形。凹面(確実に)および自己交差(可能であれば)ポリゴンを処理できるアルゴリズムが必要です。単純な凸多角形を処理するために私が使用している明白で単純なアルゴリズムは、多角形の重心を計算し、その重心を原点に変換し、すべての頂点をスケーリングし、多角形を元の位置に戻すことです。
重心がポリゴンの外側にあることが多いため、このアプローチは多くの(またはすべての)凹ポリゴンでは機能しません。したがって、スケーリング操作でも変換が発生し、最終結果なしでポリゴンを「インプレース」でスケーリングできる必要があります。翻訳されています。
凹多角形をスケーリングする方法を知っている人はいますか?あるいは、スケーリング操作の参照フレームとして使用できる「視覚的中心」を見つける方法はありますか?
明確にするために、私は2D空間で作業しており、「ビジュアルセンター」を参照フレームとして使用してポリゴンをスケーリングしたいと思います。それで、質問をする別の方法は、凹面および/または自己交差するポリゴンの視覚的中心をどのように見つけるかということです。
ありがとう!