有没有更好的方法来确定与垂直线相交的两个线段的顺序?顺序是根据交点的y坐标。 天真的方法是计算交叉点并进行比较。
答案 0 :(得分:0)
我可以给你一些解决这个问题的建议:
我相信Wikipedia关于线段交叉点的此条目包含您对此问题的查询。
答案 1 :(得分:0)
我假设使用端点指定了行。
一条线与端点(x0
,y0
)/(x1
,y1
)和一条x坐标x
的垂直线的交点是于:
y = (dy/dx)(x - x0) + y0
其中dx = x1 - x0
和dy = y1 - y0
。
你有两行正在计算:
(day/dax)(x - ax0) + ay0 < (dby/dbx)(x - bx0) + by0
你可以将两边乘以dax * dbx
来摆脱分歧:
(day * dbx)(x - ax0) + (ay0 * dax * dbx) < (dby * dax)(x - bx0) + (by0 * dax * dbx)
并简化一下:
(day * dbx)(x - ax0) - (dby * dax)(x - bx0) + (ay0 - by0)(dax * dbx) < 0
这不一定更好 - 这取决于具体情况:
dax
/ dbx
/等很大,它也容易出现溢出