Сколько линии проходит через препятствие - PullRequest
0 голосов
/ 27 декабря 2011

У меня есть проблема, чтобы решить. Посмотрите на картинку: Изображение .

  • Эллипс, заполненный красным, является препятствием.
  • Черные точки - начало и конец "дороги".
  • Синяя линия - кратчайший путь из одной точки в другую.

Я рисую препятствия с помощью мыши (щелчок мыши создает эллипс), затем я вставляю шнуры начала и конца, а затем использую DrawLine для рисования линии от точки к точке. Вопрос здесь в том, как я могу проверить или посчитать, сколько пикселей линии проходит через препятствие?

Я думал о том, чтобы поместить каждый пиксельный цвет в двумерный массив перед рисованием линии, а затем как-то проверить его по числам, посчитав кратчайший путь от точки к точке и проверив, сколько 255 (число препятствий) встретится в этом. массив? Как видите, я могу создать препятствие таким образом, чтобы линия проходила через середину, только некоторую ее часть или даже рядом с ней. Мне просто не хватает идеи, как это сделать. Мне это нужно, чтобы я мог оценить каждую «дорогу». Чем больше оно проходит через препятствие, тем меньше оно получает.

Есть идеи? Любой алгоритм?

1 Ответ

4 голосов
/ 27 декабря 2011
  1. Используя уравнения эллипса и линии , найдите точки пересечения линии с контуром эллипса (может быть 2, 1 или вообще нет пересечений). Вы можете найти работающий пример этого здесь .
  2. Если действительно есть 2 точки пересечения, используйте формулу расстояния , чтобы вычислить расстояние между ними.
...