c# - 有多少线穿过障碍物

标签 c# visual-studio visual-studio-2010 algorithm drawing

我有一个问题要解决。看图: Image .

  • 红色填充的椭圆是障碍物。
  • 黑点是“路”的起点和终点。
  • 蓝线,是从一点到另一点的最短路线。

我使用鼠标绘制障碍物(鼠标单击创建椭圆),然后放入起点和终点的线,然后我使用 DrawLine 从点到点画线。这里的问题是,我如何检查或计算有多少像素的线穿过障碍物?

我想在画线之前将每个像素颜色放在一个二维数组中,然后以某种方式检查数字,计算点到点的最短路径,并检查它会遇到多少个 255's(障碍数)大批?如你所见,我可以用这种方式制造障碍,所以线会穿过中间,只是中间的一部分,甚至旁边。我只是不知道该怎么做。我需要它,所以我可以评价每条“道路”。它穿过障碍物的次数越多,获得的速率就越低。

有什么想法吗?任何算法?

最佳答案

  1. 使用 ellipse 的方程式和 line ,找到直线与椭圆轮廓的交点(可能有2个、1个或没有交点)。您可以找到此 here 的有效示例.
  2. 如果确实有2个交点,使用distance formula计算它们之间的距离。

关于c# - 有多少线穿过障碍物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8648298/

相关文章:

c# - 将事件绑定(bind)到命令

visual-studio - Visual Studio 2010 - 配置转换不起作用,未添加自定义构建配置

c# - 无法通过 ASP.NET Web 应用程序将数据插入 MySQL 表

c# - 将 C# 项目从 visual studio 2010 降级到 visual studio 2008

c# - 优化 RIA 服务的 Azure 存储查询

c# - 从 ATL 到 C# 的 WebBrowser 控件

C# webbrowser 控件 - 我想使用/链接特定字体

c# - NHibernate 的工作单元/存储库管理器?

c# - Visual Studio 2005 清理解决方案

visual-studio - 将xamarin.ios和xamarin.android添加到可移植类库