Пересечения линий - PullRequest
       28

Пересечения линий

0 голосов
/ 09 марта 2012

Я пишу приложение, которое рассчитает фокусное расстояние камеры на основе линий, которые можно увидеть на фотографии.Например, если вы делаете снимок комнаты, линия потолка может быть одной прямой линией (горизонтальной), пол может быть другой прямой линией (горизонтальной), а стена может быть третьей прямой линией (вертикальной).Цель моего приложения состоит в том, чтобы пользователь выбирал эти прямые линии по одной за раз, и как только 3 линии выбраны, эти линии необходимо будет пересечь, чтобы сформировать «треугольник».

Моя проблема в том, что, поскольку выбранные линии не обязательно пересекаются, как мне продлить линию, пока она не пересекается с другой линией?В моем приложении у меня есть начальная и конечная позиции всех 3 выбранных пользователем строк (Vector2's).Но как мне расширить каждую строку до тех пор, пока она не пересекается с двумя другими линиями?

Если кому-то нужно изображение, чтобы уточнить, что я имею в виду, отправьте мне ответ и я загружу его на Flickr

Ответы [ 2 ]

0 голосов
/ 09 марта 2012

Похоже, вам нужно сделать 3 вещи.

  1. Расширить строки до конца изображения (в вашем коде, невидимого для пользователя).

  2. Расчет пересечения линии. Смотрите этот ответ: обнаружение пересечения линии

  3. на стороне пользователя, вытяните линии до точки пересечения, если она есть на рисунке.

0 голосов
/ 09 марта 2012

Скажем, каждая линия представлена ​​двумя векторами 2: v1 и v2, все точки в этой строке будут заданы уравнением: p(x) = v1 + x(v2-v1) Каждая строка будет иметь свое уравнение в этой форме. Для каждой пары линий вам нужно будет найти значение x, которое даст вам одинаковое p (x) для обоих уравнений; p (x) будет точкой пересечения этих двух линий.

...