gpt4 book ai didi

c++ - 套索线选择

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:21 25 4
gpt4 key购买 nike

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

目前我用三个类来表示这个图:Node、Edge 和 Graph。 Node 是一个简单的 X、Y 容器。 Edge 有一个指向源节点和目标节点的指针。图形包含节点和边的列表。

我知道当节点是选择的一部分时如何选择边,但是当相应的节点不是选择的一部分时如何实现边选择(即边-多边形相交测试)。我说多边形是因为我的套索工具构建了一个表示 n 边多边形的点列表。

这是我需要的算法示例(红色代表预期结果)。

enter image description here

This is not for school but rather a hobby project I am working on.

最佳答案

$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

关于c++ - 套索线选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11337052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com