[size=-2]------ Добавлено в 16:55
Связь экранных координат с пространственными
При создании приложений типа редакторов и модельеров проблема связи оконных координат с пространственными становится весьма важной Недостаточно выбрать объект или элемент на экране, необходимо соотнести перемещения указателя мыши с перемещением объекта в пространстве или изменением его размеров.
Один из часто задаваемых вопросов звучит так. "Какой точке в пространстве соответствует точка на экране с координатами, например, 100 и 50?"
Ответить на такой вопрос однозначно невозможно, ведь если на экране присутствует проекция области пространства, то под курсором в любой точке окна находится проекция бесконечного числа точек пространства Однако ответ станет более определенным, если имеется в виду, что под курсором не пусто, есть объект. В этом случае, конечно, содержимому соответствующего пиксела соответствует лишь одна точка в пространстве.
Для решения несложных задач по переводу координат можно воспользоваться готовой командой библиотеки glu gluUnProject, переводящей оконные координаты в пространственные координаты Пример из подкаталога Ex20 поможет нам разобраться с этой командой В нем рисуется куб, при щелчке кнопки выводится информация о соответствующих мировых координатах (рис. 6.10).
При создании приложений типа редакторов и модельеров проблема связи оконных координат с пространственными становится весьма важной Недостаточно выбрать объект или элемент на экране, необходимо соотнести перемещения указателя мыши с перемещением объекта в пространстве или изменением его размеров.
Один из часто задаваемых вопросов звучит так. "Какой точке в пространстве соответствует точка на экране с координатами, например, 100 и 50?"
Ответить на такой вопрос однозначно невозможно, ведь если на экране присутствует проекция области пространства, то под курсором в любой точке окна находится проекция бесконечного числа точек пространства Однако ответ станет более определенным, если имеется в виду, что под курсором не пусто, есть объект. В этом случае, конечно, содержимому соответствующего пиксела соответствует лишь одна точка в пространстве.
Для решения несложных задач по переводу координат можно воспользоваться готовой командой библиотеки glu gluUnProject, переводящей оконные координаты в пространственные координаты Пример из подкаталога Ex20 поможет нам разобраться с этой командой В нем рисуется куб, при щелчке кнопки выводится информация о соответствующих мировых координатах (рис. 6.10).
[size=-2]------ Добавлено в 17:25
Нашел простейший способ решения этой задачи средствами Хиасм, но не удовлетворительный, все же:
Выбор элементов
Задача выбора определенных элементов на экране является очень распространенной для многих интерактивных приложений, поэтому достойна подробного рассмотрения. Решений ее несколько. Одно из самых простых состоит в том, что элементы раскрашиваются в уникальные цвета, и для выбора элемента просто определяется цвет пиксела в нужной точке.
Рассмотрим проект из подкаталога Ex01. Это плоскостная картинка, содержащая изображения двух треугольников: красного и синего. При нажатии кнопки мыши определяем цвет пиксела под курсором и выделяем его составляющие, по которым вычисляем выбранный элемент.
Задача выбора определенных элементов на экране является очень распространенной для многих интерактивных приложений, поэтому достойна подробного рассмотрения. Решений ее несколько. Одно из самых простых состоит в том, что элементы раскрашиваются в уникальные цвета, и для выбора элемента просто определяется цвет пиксела в нужной точке.
Рассмотрим проект из подкаталога Ex01. Это плоскостная картинка, содержащая изображения двух треугольников: красного и синего. При нажатии кнопки мыши определяем цвет пиксела под курсором и выделяем его составляющие, по которым вычисляем выбранный элемент.