这是问题的图形表示: http://i.imgur.com/aBG3p.jpg请帮我一个三角算法
给出的起始点开始(X1,Y1)和目标点(x2,y2),我必须确定路径在两点之间是开放的,或者如果它不是开放的,则发生碰撞的坐标。
这将是除涉及特殊规则一个很重要的问题:
线可以拦截点,而不会造成碰撞它(I,J)调用一个小而不同程度。如果(i,j)与(x1,y1)直接相邻,我们可以安全地在其角上切割大约0.4,而不会触发碰撞。然而,如果直接通过它,我们不能减少0.4,只能在角落。随着我们距离(x,y)越来越远,这个数字逐渐减少到大约0.2。不幸的是,我只是想重建一次我看到的东西,所以我不知道确切的值,我只是近似他们。
需要注意的是:如果直接在(i,j)旁边的空间在我们相交的平面上,在我们相交的一侧也被占用,则无论如何都会发生碰撞。如果我们拦截它太多,碰撞就会发生(i,j),否则会发生在相关的相邻区块中。
我做了几次尝试来解决这个问题,总是以错误的底片和/或在错误的贴片上产生的碰撞结束。我试图在不考虑角度的情况下做这件事,只要看着x和y的小数点就行了。我不确定是否可以做到这一点,或者我必须以某种方式使用角度,或者以某种方式使用角度可以让我的生活更轻松。
如果可以的话请帮忙!
矩形是1x1,并且全部在网格上对齐。 – user1012037
你的意思是什么“减少0.4”?是0.4分数?如果是这样,一小部分是什么?你能否解释1有点不同? – vlsd
矩形是1x1,但我需要能够安全地切割角落而不会触发碰撞。我不确定该怎么称呼它。可能三角形的切割面积和其两边的长度对于防止误报/消极是非常重要的。 – user1012037