пусть p(x,y)
и a
в своем направлении уравнение линии равно D = a.x+b
где b = y - a.x
let p1(x1,y1)
и p2(x2,y2)
сегмент, уравнение которого равно D' = a'.x+b'
для любого x
in [x1;x2]
где a' = (y2-y1)/(x2-x1)
и b' = y2 - a'.x2 = y1 - a'.x1
у вас есть пересечение, если есть x
между [x1;x2]
, для которого D = D'
таким образом, если X = (b'-b)/(a-a')
принадлежит [x1;x2]
тогда Y = a.X+b = a'.X+b
дает вам точку пересечения P(X,Y)
например:
пусть p(255,255)
, a = 1
=> b = 0
пусть p1(60,179)
и p2(168,54)
=> a' = -125/108
=> b' = 24596/99
=> X = (24596/99 - 0)/(1+125/108) = 115,1587983
=> Y = (24596/99 - 0)/(1+125/108) = 115,1587983
X
находится между 60 и 168, поэтому существует точка пересечения в P(X,Y)