Получить параллельную линию

#geometry

#геометрия

Вопрос:

У меня есть линия, представленная двумя точками (A и B) и другой точкой (C), которая не принадлежит этой линии. Как я могу получить начальную и конечную точки параллельной линии, которая содержит заданную точку (C)?

Редактировать

У меня есть класс swift, который представляет линию глаз на картинке.

 var eyesLine = Line(start: rightEye, end: leftEye)
  

где rightEye и leftEye являются экземплярами CGPoint;

Я хочу получить линию, которая представляет рот. Из CIDetector я получаю центр рта. Предположим, что угол рта такой же, как у глаз, я хочу получить линию, параллельную глазам.

Комментарии:

1. Вы уже что-то пробовали?

2. Я не уверен, понял ли я ваш вопрос. Я пробовал что?

3. D = C B - A

4. Пробовал что-нибудь закодировать?

5. @VladHatko Я думаю, он спрашивал: «Вы пробовали буквально что-нибудь», поскольку кажется вероятным, что вы добились бы успеха, если бы у вас было.

Ответ №1:

Уравнение линии y = mx b . Итак, если вам нужна параллельная линия, у вас должна быть линия с тем же наклоном ( m ), но с учетом требуемой точки (C).

Следующая формула также верна: m = (y_B - y_A) / (x_B - x_A)

Итак, в основном вам нужно решить следующее уравнение с вашей точкой:

b = y_C - ((y_B - y_A) / (x_B - x_A)) * x_C

Затем вам просто нужно вычислить другую y координату по вашему выбору, изменив значения x (поскольку C уже является одной точкой новой строки):

y_D = ((y_B - y_A) / (x_B - x_A)) * x_D (y_C - ((y_B - y_A) / (x_B - x_A)) * x_C)

Чтобы еще больше упростить вашу задачу, вы можете предположить, что x_D = 0 (пример), и тогда вам останется только вычислить:

y_D = y_C - ((y_B - y_A) / (x_B - x_A)) * x_C

Ваши конечные точки будут иметь (x_C, y_C) (0, y_D) координаты и .

Примечание:

В начале вашего скрипта вы также должны проверить, если x_A = x_B . Если это верно, то ваши конечные точки будут иметь (x_C, y_C) (x_C, y_D) координаты и, где y_D может быть любое значение, кроме y_C .

HTH 😉

Комментарии:

1. Что, если линия вертикальная? Уравнение школьной линии не полностью подходит для компьютерной геометрии.

2. Добавлено это исключение @MBo 😉