当前位置:  开发笔记 > 人工智能 > 正文

WPF:沿路径查找元素

如何解决《WPF:沿路径查找元素》经验,为你挑选了0个好方法。

我还没有标记这个问题.
由于Bounty Time-Limit,当前接受的答案被自动接受


参考我目前正在构建的这个编程游戏.

从上面的链接可以看出,我目前正在构建一个游戏,用户可编程机器人在竞技场中自主战斗.


现在,我需要一种方法来检测机器人是否在特定角度检测到另一个机器人(取决于炮塔可能面对的位置):

替代文字http://img21.imageshack.us/img21/7839/robotdetectionrg5.jpg

从上图中可以看出,我已经绘制了一种坦克的视角,我现在需要在游戏中模拟,以检查其中的每个点以查看是否有其他机器人在视野中.

机器人只是在战斗竞技场(另一个画布)上不断翻译的画布.

我知道炮塔的标题(它将面向当前的方式),并且我需要找到它的路径中是否有任何机器人(并且路径应该以'视点'的方式定义,如图所示)上面的图像以红色"三角形"的形式出现.我希望图像能让我的信息更加清晰.

我希望有人可以指导我实现这个问题所涉及的数学.


[UPDATE]

我已经尝试过你告诉我的计算,但它没有正常工作,因为从图像中可以看出,bot1应该无法看到Bot2.这是一个例子:

替代文字http://img12.imageshack.us/img12/7416/examplebattle2.png

在上面的场景中,Bot 1正在检查他是否可以看到Bot 2.以下是详细信息(根据Waylon Flinn的回答):

angleOfSight = 0.69813170079773179 //in radians (40 degrees)
orientation = 3.3 //Bot1's current heading (191 degrees)

x1 = 518 //Bot1's Center X
y1 = 277 //Bot1's Center Y

x2 = 276 //Bot2's Center X
y2 = 308 //Bot2's Center Y

cx = x2 - x1 = 276 - 518 = -242
cy = y2 - y1 = 308 - 277 =  31

azimuth = Math.Atan2(cy, cx) = 3.0141873380511295

canHit = (azimuth < orientation + angleOfSight/2) && (azimuth > orientation - angleOfSight/2)
       = (3.0141873380511295 < 3.3 + 0.349065850398865895) && (3.0141873380511295 > 3.3 - 0.349065850398865895)
       = true

根据上面的计算,Bot1可以看到Bot2,但从图像中可以看出,这是不可能的,因为它们面向不同的方向.

我在上面的计算中做错了什么?

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有