1

Qt を使用して 2D グラフ作成アプリケーションを構築しています。グラフには、ユーザーが作成できるノードとエッジがあり、選択はなげなわ選択ツールを介して行われます。これまでのところ、単純なPoint in polygonアルゴリズムを使用してノード選択を実装することができました。ただし、エッジ選択を実装する必要があります。

現在、このグラフを表す 3 つのクラスがあります。ノード、エッジ、グラフです。ノードは単純な X、Y コンテナーです。Edge には、ソース ノードとターゲット ノードへのポインターがあります。グラフには、ノードとエッジのリストが含まれています。

ノードが選択の一部である場合にエッジを選択する方法は知っていますが、対応するノードが選択の一部ではない場合にエッジ選択を実装するにはどうすればよいですか (つまり、エッジとポリゴンの交差テスト)。私のなげなわツールは、n 辺の多角形を表す点のリストを作成するため、多角形と言います。

必要なアルゴリズムの例を次に示します (赤色は期待される結果を表します)。

ここに画像の説明を入力

これは学校向けではなく、私が取り組んでいる趣味のプロジェクトです。

4

1 に答える 1

0
$selected = [];

for each $polygon in $scene:
    if $polygon.intersects($selectionPolygon):
        for each $edge in $polygon:
            for each $selectionEdge in $selectionPolygon:
                if $edge.crosses($selectionEdge):
                    $selected.push($edge)
                    break
                endif
            end
        end
    endif
end
于 2012-07-05T02:28:09.520 に答える