java-如何阻止一个线段与另一个线段相交?

一段时间后,几何代码变得很烦人,但是我想完成这个库,所以就去了.

基本上,移动一个线段A使其不再与另一个线段B相交的最有效方法是什么?

两个线段均以起点(x,y)和描述该线段如何从该点延伸的向量(eX,eY)定义.下面是一个描述线段的示例:

我正在寻找的解决方案是将线段移动到(不以任何方式修改其范围)到不相交的最近位置.一个例子:

获得此结果的最有效方法是什么?

编辑:人们问我“移动”是什么意思-我的意思是更改线段起点的(x,y)坐标.这将翻译整个片段.

线段存在于笛卡尔平面上,并且允许任何x / y移动.

解决方法:

怎么样:找到四个向量:两个从红线的端点垂直于黑线的端点,以及两个从红线的端点垂直于黑线的端点.取这些向量中最短的一个,并沿其移动红线.

上一篇:java.awt.geom.Area减法后返回多个部分?


下一篇:javascript – 指定Math.atan2的原点