Если у меня есть 2D-прямоугольник типа Microsoft.XNA.Framework.Rectangle, и я хочу увидеть, проходит ли точка на экране (определенная как (x, y)) через него после того, как она также была повернута на определенную величину?
Проверяете, пересекает ли точка повернутый прямоугольник?
comment
Аналогичный вопрос размещен здесь: stackoverflow.com/questions/1240660/ Она находится в формах Windows, но также применима к XNA.
- person Marking   schedule 07.02.2011
Ответы (2)
Поверните вокруг начала координат так, чтобы прямоугольник был выровнен по осям X и Y, тогда тест станет простым:
is rect.left <= point.x <= rect.right, is rect.bottom <= point.y <= rect.top
Если вы не знаете, как вращается прямоугольник, вы можете выяснить это с помощью тригонометрии.
person
Matt Curtis
schedule
06.02.2011
Дайте мне знать, если вам нужна дополнительная помощь с триггером.
- person Matt Curtis; 06.02.2011
Поправьте меня, если я ошибаюсь, но если я поверну прямоугольник так, как вы предлагаете, я буду проверять пересечения в новом прямоугольнике, который охватывает повернутый прямоугольник. Что я хочу сделать, так это проверить пересечения только на повернутом прямоугольнике.
- person meds; 07.02.2011
Если вы повернете и прямоугольник, и точку, новый прямоугольник будет фактически тем же прямоугольником, только аккуратно выровненным, чтобы вы могли легко проверить его границы. Чтобы увидеть, как это работает, нарисуйте (на бумаге) прямоугольник под углом 45 градусов вместе с некоторой точкой. Теперь наклоните голову на 45 градусов, и прямоугольник будет выглядеть так, как будто он больше не вращается.
- person Matt Curtis; 07.02.2011
Можете ли вы повернуть и прямоугольник, и точку, а затем посмотреть, находится ли точка внутри, с простой проверкой границ?
Под неповоротом я подразумеваю, что один из краев прямоугольника выровнен по оси x.
person
Daniel Mošmondor
schedule
06.02.2011