请帮我三角算法

时间:2011-10-28 01:46:19

标签: algorithm math trigonometry

以下是问题的图示: http://i.imgur.com/aBG3p.jpg

给定起点(x1,y1)和目标点(x2,y2),我必须确定两点之间的路径是否打开,或者如果它未打开,则发生碰撞的坐标。< / p>

除了涉及的特殊规则之外,这将是一个微不足道的问题:

  1. 该行可以截取一个点,将其称为(i,j)一个小的且不同程度而不会引起碰撞。如果(i,j)与(x1,y1)直接相邻,我们可以安全地在其拐角处切割约0.4而不会触发碰撞。但是,如果直接通过它,我们不能削减0.4,只能在角落。当我们越来越远离(x,y)时,这个数字逐渐减少到大约0.2。不幸的是,我只是想重建我曾经看过的东西,所以我不知道确切的值,我只是近似它们。

  2. 警告1:如果直接在(i,j)旁边的空间,在我们交叉的平面上,在我们交叉的一侧,也被占用,无论怎样都会发生碰撞。如果我们进行过多的拦截,碰撞将发生(i,j),否则会发生在相关的相邻瓷砖中。

  3. 我已经多次尝试解决这个问题,总是以错误的底片和/或导致错误拼贴的碰撞结束。我试图在不考虑角度的情况下这样做,只需通过查看x和y的小数点就可以了。我不确定是否可以这样做,或者我是否必须以某种方式使用角度,或者以某种方式使用角度可以让我的生活更轻松。

    如果可以,请帮忙!

1 个答案:

答案 0 :(得分:2)

似乎您可以通过将占用的网格视为包含单位圆来获得与您描述的结果类似的结果。这会让你通过角落,但阻止任何2个相邻的角落,因为他们接触。

因此,我尝试使用您当前的碰撞方法快速检查矩形,然后在发现碰撞后对其进行细化,方法是测试进入框中的线与其中心的圆相对应。