Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 两条直线间的碰撞检测_Math_Geometry_Collision Detection - Fatal编程技术网

Math 两条直线间的碰撞检测

Math 两条直线间的碰撞检测,math,geometry,collision-detection,Math,Geometry,Collision Detection,这是一个相当简单的问题。我需要一个方程来确定两条二维直线是否相互碰撞。如果是的话,我还需要知道碰撞的X和Y位置。把它们都放进去。如果A和B是相同的,那么它们是平行的。否则,创建两个联立方程组并求解x和y。让A和B用此参数形式表示:y=mx+B 其中m是直线的斜率 现在,在平行度A和B的情况下,它们的斜率应该相等 否则它们将在点T(x,y) 要找到点T的坐标,必须解一个简单的方程: A:y=mx+b B:y=Mx+B y(A)=y(B)意味着:mx+B=mx+B通过放置 x到线A我们发现y=((m

这是一个相当简单的问题。我需要一个方程来确定两条二维直线是否相互碰撞。如果是的话,我还需要知道碰撞的X和Y位置。

把它们都放进去。如果A和B是相同的,那么它们是平行的。否则,创建两个联立方程组并求解x和y。

AB用此参数形式表示:y=mx+B
其中m是直线的斜率
现在,在平行度AB的情况下,它们的斜率应该相等

否则它们将在点T(x,y)
要找到点T的坐标,必须解一个简单的方程:

A:y=mx+b
B:y=Mx+B
y(A)=y(B)意味着:mx+B=mx+B通过放置
x到线A我们发现y=((m*(B-B))/(m-m))+B


所以:T:((B-B)/(m-m),((m*(B-B))/(m-m))+B)

你是在问如何检查两条直线是否相交,或者两条移动直线的路径是否导致直线相交?我想给你的一个提示是:如果你有几何问题,首先检查:。保罗·伯克(Paul Bourke)写了很多这样的常见问题,比如你的:。@aioobe:General form与slope intercept form没有相同的问题。这可能适用于大多数情况。但是,有一个重要的边缘情况,即直线的坡度未定义。在这种情况下,你的方法是不够的。@AND:你总能找到坡度!设A:ax+by+c=0(它的一般形式),那么m(斜率)是:-(b/A),这意味着直线平行于x轴。在这一点上,你必须把第二行的y改为-c/bOkay,你改变了斜率的定义。在上面的第一个注释中,您将斜率定义为m=-(b/a),如果您想使x依赖于y,则可以;这不是一个标准的表达,但也不是不恰当的。但如果这样做,将a设置为0会使坡度在这个意义上未定义。在第二个注释中,您将直线的定义更改为y依赖于x的函数,因此如果我们使用它,斜率将为m=-(a/b)。这里,如果b=0,那么直线平行于Y轴,其斜率在该约定中未定义。另一种方法是,让第1行由0*x+Y+0=0给出(一般形式),第2行由x+0*Y+0=0给出,然后将这些直线应用于上述方法。正确的答案是直线在原点相交,但您的算法(无论您用于定义坡度的惯例如何)将无法得出解决方案。