2010-04-23 2 views
3

Относительно this question Мне было интересно, есть ли у .NET какие-либо библиотеки (или функции), которые я могу использовать, чтобы определить, столкнулась ли одна точка с другой.Построен в raytracing?

Я не уверен, что углы я должен использовать, но есть какая-то функция, как этот

func(point src, rect target, angle, distanceOfVision, listPointOrRectOfWalls) 

Довольно маловероятно, но я не знаю формулу или как начать. Его быстрый и грязный прототип. Я подумываю написать функцию func, но снижая угол, делая линию видимости прямоугольником и проверяем, есть ли какие-либо точки стены между src и target.

+0

Я честно понятия не имею, но может ли это быть тем, что предоставляет [XNA] (http://www.xna.com/)? –

+0

Просто для удовольствия: http://tirania.org/blog/archive/2007/Nov-16.html ^^ – tanascius

ответ

3

Я бы решить эту проблему как таковые:

  1. Три точки прямоугольника определяет плоскость, что прямоугольник лежит в
  2. Вместо представления линии в качестве точки и угла, представляет его как. точка и вектор: source_point + direction_vector * t. Если вы установили t = 1, у вас есть две точки, определяющие вашу линию.
  3. Вычислить пересечение линии с плоскостью: http://en.wikipedia.org/wiki/Line-plane_intersection
  4. Проверьте, находится ли точка пересечения внутри прямоугольника.