hcoord
- это то, что вас интересует. Это структура x, y, w
, а точка p
находится на линии, если
hcoord.x * p.x + hcoord.y * p.y + hcoord.w = 0
Часть (hcoord.x, hcoord.y)
описывает нормаль линии. hcoord.w
описывает расстояние линии до начала координат, масштабированное по обратной длине нормали.
Если вам известна одна из координат точки на линии, а вы хотите знать другую, вы можете просто изменить приведенную выше формулу, чтобы получить:
p.x = (-hcoord.w - hcoord.y * p.y) / hcoord.x
p.y = (-hcoord.w - hcoord.x * p.x) / hcoord.y
Помните о делении на ноль, если линия горизонтальная или вертикальная.
Если вместо этого вы хотите, чтобы биссектриса в параметрической форме (точка p
и направление d
), вы могли бы использовать:
p1, p2 = the points of the line segments for which to calculate the bisector
p = 0.5 * (p1 + p2)
d = (p2.y - p1.y, p1.x - p2.x)