gpt4 book ai didi

c# - 如何找出两条折线是否相交

转载 作者:行者123 更新时间:2023-11-30 12:15:38 24 4
gpt4 key购买 nike

我无法确定两条折线是否相交。

好吧,主要目标是将最后的 X 和 Y 与另一条折线进行比较,看看它是否发生碰撞,也就是与它相交。

由于移动了 X 和 Y,数据中存在间隙,所以大多数时候我无法在另一条 PolyLine 中找到 X 和 Y。

我想我应该比较 visualtree 之类的东西而不是数据本身,但我不知道该怎么做。

<Canvas x:Name="LayoutRoot" Background="Black" Margin="2">
<Polyline x:Name="player3line" Stroke="GreenYellow" StrokeThickness="4" Points="146,106 141,106 136,105 131,105 126,105 121,106 116,108 112,110 108,113 104,115 100,118 96,120 92,123 88,126 84,129 80,132 77,136 74,140 72,144 69,148 67,152 64,156 " />
<Polyline x:Name="player4line" Stroke="Cyan" StrokeThickness="4" Points="85,113 89,116 93,119 97,121 102,123 107,124" />
</Canvas>

必须有一种简单的方法来检查这两者是否相交吗?

最佳答案

任何碰撞测试都必须对数据进行,因为据我所知,Silverlight 中没有神奇的硬件/软件碰撞测试。

如果是 2 条折线,您需要对照另一条线的每个线段检查该线的每个线段(或者对于初学者来说是一个或两个的简化版本)。

您可以先检查bounds-rectangle 碰撞(每个多边形的最小和最大 x,y 位置构成一个边界矩形),如果它们完全重叠,则需要检查每个单独的线段碰撞。

据我所知,此类碰撞测试没有捷径可走。只需一些技巧即可加快检查速度。

This link显示了一个高级示例,但也有更多面向游戏的解决方案。

关于c# - 如何找出两条折线是否相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7032771/

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