1

我正在使用 Qt 构建一个 2D 图形应用程序。该图具有用户可以创建的节点和边,并且选择是通过套索选择工具完成的。到目前为止,我已经能够使用简单的多边形点算法来实现节点选择。但是,现在我需要实现边缘选择。

目前我有代表这个图的三个类:节点、边和图。Node 是一个简单的 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 回答