我有一个问题要解决。看图: Image .
- 红色填充的椭圆是障碍物。
- 黑点是“路”的起点和终点。
- 蓝线,是从一点到另一点的最短路线。
我使用鼠标绘制障碍物(鼠标单击创建椭圆),然后放入起点和终点的线,然后我使用 DrawLine 从点到点画线。这里的问题是,我如何检查或计算有多少像素的线穿过障碍物?
我想在画线之前将每个像素颜色放在一个二维数组中,然后以某种方式检查数字,计算点到点的最短路径,并检查它会遇到多少个 255's(障碍数)大批?如你所见,我可以用这种方式制造障碍,所以线会穿过中间,只是中间的一部分,甚至旁边。我只是不知道该怎么做。我需要它,所以我可以评价每条“道路”。它穿过障碍物的次数越多,获得的速率就越低。
有什么想法吗?任何算法?
最佳答案
- 使用 ellipse 的方程式和 line ,找到直线与椭圆轮廓的交点(可能有2个、1个或没有交点)。您可以找到此 here 的有效示例.
- 如果确实有2个交点,使用distance formula计算它们之间的距离。
关于c# - 有多少线穿过障碍物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8648298/