У меня проблема с моим маленьким проектом редактора Opengl / freeglut / c ++ 2D.
Редактор позволяет рисовать четырехугольник или треугольник (Объект). Вы можете изменить размер объекта, перетаскивая угол объекта в нужное вам место.
Вы также можете перемещать объект по экрану, если объект активен (вы нажимаете на объект, чтобы сделать его активным).
Теперь проблема, которую я имею, состоит в том, чтобы сделать область, на которую вы щелкаете, чтобы сделать объект активным. Раньше область активации была просто четырехугольником вокруг объекта (укажите ширину и высоту объекта и т. Д.) (Синие точки на рисунке показывают границы области активации)
http://i48.tinypic.com/muyh41.png
Но я хочу, чтобы область активации была областью объекта, а не квадом вокруг него.
Итак, вопрос в том, как бы вы проверили, щелкала ли мышь внутри области, как на картинке выше или ниже этого текста?
OpenGL — это просто API для рисования, а (Free) GLUT — просто минималистичный фреймворк для создания окна с присоединенным контекстом OpenGL. Ни один из них не поможет вам там.
Вы должны вручную выполнить тест пересечения луча и треугольника
Эти ссылки могут быть интересны для вас
http://www.lighthouse3d.com/tutorials/maths/ray-triangle-intersection/
http://www.gamedev.net/topic/447861-ray—triangle-intersection-code/
Других решений пока нет …