Отрезки линии от точки - PullRequest
       36

Отрезки линии от точки

1 голос
/ 19 ноября 2009

У меня есть точка р и 2 отрезка в плоскости 2D. Точка p - это точка обзора, откуда камера смотрит на отрезки. Я хочу проверить, частично или полностью скрыт отрезок 1 за линией 2, если смотреть из точки P.

Ответы [ 2 ]

1 голос
/ 19 ноября 2009

Ответ Slurdge - хорошее начало, но немного сложнее.

Если линейный сегмент 2 ближе к С, чем линейный сегмент 1, он все еще может быть виден, например,

A1-------A2

  B1-B2


   C

Здесь B1 и B2 находятся "внутри" сектора A1A2, но не скрыты.

Труднее всего разобраться, если B1 «между» А1 и А2, но ближе к камере, а В2 «не между» А1 и А2, а дальше от камеры:

             B2

A1-----A2
 B1


   C

B1B2 может обрезать край сегмента линии, тем самым скрывая небольшую часть B1B2 (или, возможно, нет!). Я думаю, вам нужно будет найти пересечение A1A2 и B1B2, чтобы проверить, действительно ли это происходит.

1 голос
/ 19 ноября 2009

Мне кажется, вопрос в том, замаскирована ли вторая строка первой строкой.

Допустим, ваша точка камеры - C, а ваши сегменты - A1, A2 и B1, B2.

Я бы вычислил перекрестные произведения CA1xCB1 и CA2xCB2. Знак указывает, находится ли точка, если точка B1 находится слева или справа от линии CA1. Это зависит от того, как ваши треугольники CA1A2 и CB1B2 ориентированы (они должны быть ориентированы одинаково, у них много способов сделать это).

Затем вы можете использовать знак, чтобы узнать, находитесь ли вы в следующих случаях:

  • CA1xCB1 отрицательный или CA2xCB2 положительный, затем частично видимый
  • противоположность, затем скрытая.

Вы также можете вычислить CA1xCB2 и CA2xCB1, чтобы иметь штрафные случаи.

...