2011-02-06 5 views
1

Если у меня есть 2D прямоугольник типа Microsoft.XNA.Framework.Rectangle, и я хочу посмотреть, проходит ли через него точка на экране (определенная как (x, y)) после того, как она также была повернута на определенную сумму?Поиск, если точка пересекает вращающийся прямоугольник?

+0

Аналогичный вопрос размещен здесь: http://stackoverflow.com/questions/1240660/check-if-a-point-is-in-a-rotated-rectangle-c Он находится в виде окон, но также применяется для XNA. – Marking

ответ

3

Поворот вокруг начала координат так, чтобы прямоугольник выровнен по X & оси Y, то тест становится простым:

is rect.left <= point.x <= rect.right, is rect.bottom <= point.y <= rect.top

Если вы не знаете, вращение прямоугольника, вы можете понять это с тригонометрией.

+1

Дайте мне знать, если вы хотите больше помочь с помощью триггера. –

+0

Исправьте меня, если я ошибаюсь, но если я поворачиваю прямоугольник так, как вы полагаете, я буду проверять пересечения в новом прямоугольнике, который включает вращающийся прямоугольник. То, что я хочу сделать, это проверить только пересечения на прямоугольнике, который был повернут. – tweetypi

+0

Если вы поворачиваете прямоугольник и точку, «новый прямоугольник» на самом деле является одним и тем же прямоугольником, просто выравнивается, чтобы вы могли легко проверить его границы. Чтобы увидеть, как это работает, нарисуйте (на бумаге) прямоугольник под углом 45 градусов вместе с некоторой точкой. Теперь наклоните голову на 45 градусов, и прямоугольник будет выглядеть так, как будто он больше не вращается. –

2

Можете ли вы повернуть как прямоугольник, так и точку, а затем увидеть, находится ли точка внутри с простой проверкой границ?

Unrotate Я имею в виду, что одна из краев прямоугольника выровнена с осью x.

Смежные вопросы