Algorithm 如何检测平行线段的顺序?

Algorithm 如何检测平行线段的顺序?,algorithm,geometry,Algorithm,Geometry,假设给定了两条以上(接近)的线段。如何计算它们的位置顺序 例如: 我期望从输入中得到的结果 (x_0a,y_0a),(x_0b,y_0b),(x_1a,y_1a),(x_1b,y_1b),(x_4a,y_4a),(x_4b,y_4b) 是 L_0->L_4->L_2->L_1->L_3为每个分段建立线性方程: Ai*x + Bi*y + Ci = 0, where Ai = y_ib - y_ia Bi = x_ia - x_ib Ci = -A * x_ia - B

假设给定了两条以上(接近)的线段。如何计算它们的位置顺序

例如:

我期望从输入中得到的结果

(x_0a,y_0a),(x_0b,y_0b),(x_1a,y_1a),(x_1b,y_1b),(x_4a,y_4a),(x_4b,y_4b)


L_0->L_4->L_2->L_1->L_3

为每个分段建立线性方程:

Ai*x + Bi*y + Ci = 0, where  
    Ai = y_ib - y_ia
    Bi = x_ia - x_ib
    Ci = -A * x_ia - B * y_ia
对于每个方程,用
0
替换
x
,并找到
y

Bi*y + Ci = 0
y = - Ci / Bi  
然后按结果
y
对段进行排序


当线段与y轴不平行时,此操作有效。如果它们平行于y轴,则用
0
替换
y
,找到
x
,并按
x
排序,为每个段建立线性方程:

Ai*x + Bi*y + Ci = 0, where  
    Ai = y_ib - y_ia
    Bi = x_ia - x_ib
    Ci = -A * x_ia - B * y_ia
对于每个方程,用
0
替换
x
,并找到
y

Bi*y + Ci = 0
y = - Ci / Bi  
然后按结果
y
对段进行排序


当线段与y轴不平行时,此操作有效。如果它们平行于y轴,则用
0
替换
y
,找到
x
,并按
x
排序选择任意段末端作为基点。例如,(x0a,y0a)

为此段生成向量(不需要标准化)

做垂直向量

n = (-v.y, v.x)
计算垂直于v的直线上每个线段任意端的投影值(该值对于线段两端相同)


排序p(i)

选择任意段端点作为基点。例如,(x0a,y0a)

为此段生成向量(不需要标准化)

做垂直向量

n = (-v.y, v.x)
计算垂直于v的直线上每个线段任意端的投影值(该值对于线段两端相同)


排序p(i)

这里几乎没有任何编程内容,它是关于几何和坐标的。这里几乎没有任何编程内容,它是关于几何和坐标的。