Хорошо, пусть A
, B
, C
, D
- это точки, определяющие ваш случайный четырехугольник:
- 1 - это сегмент [AB]
- 2 - это сегмент [BC]
- 3 - это сегмент [CD]
- 4 - это сегмент [DA]
Теперь позвольте E
(topслева), F
(вверху справа), G
(внизу слева), H
(внизу справа) - точки вашего прямоугольника.В вашем изображении вы должны определить:
- уравнение параллели к 1, проходящее через
E
(назовем это 1 ') - уравнение параллели к 2передавая
F
(назовем это 2 ') - уравнением параллели к 3, передавая
G
(назовем это 3') - уравнением параллели к 4проходя мимо
H
(назовем это 4 ')
Затем вы можете вычислить их пересечения, что, в свою очередь, даст вам нужные вам линии.
Давайте определим 1' (другие аналогичны): все линии, параллельные 1, имеют тот же наклон, что и 1.И этот наклон s1
определяется как:
s1 = (yB - yA) / (xB - xA)
Тогда 1 'имеет уравнение, подобное y = s1 * x + b
.Поскольку мы хотим, чтобы эта линия достигла точки E(xE, yE)
, у нас есть b
:
yE = s1 * xE + b => b = yE - s1 * xE
, а затем 1 'имеет для уравнения: y = s1 * (x - xE) + yE
.Точно так же 2 'имеет для уравнения y = s2 * (x - xF) + yF
, s2
определяемое по координатам B
и C
, то же самое для 3' и 4 '.
Теперь мы хотим пересечение 1'и 2 ': эта точка I
имеет координаты для проверки уравнений этих двух линий, поэтому:
yI = s1 * (x - xE) + yE
yI = s2 * (x - xF) + yF
Итак:
s1 * (xI - xE) + yE = s2 * (xI - xF) + yF
, что дает xI
затем yI
:
xI = (s1 * xE - s2 * xF + yF - yE) / (s1 - s2)
yI = s2 * (xI - xF) + yF
= (s1 * s2 * xE - s1 * s2 * xF + s1 * yF - s2 * yE) / (s1 - s2)
Вы можете определить координаты J
(пересечение 2 'и 3'), K
(пересечение 3 'и 4') и L
(пересечение4 'и 1') одинаково.Требуемый четырехугольник состоит из этих 4 точек I
, J
, K
и L
.