MicroModelator Objects. Дополнительные точки.
В редакторе MicroModelator предусмотрена возможность создавать т.н. "точки - центры", являющиеся, по сути, центрами группы выбранных вами точек. На этой странице мы рассмотрим применение этих, казалось бы, ненужных объектов.
Допустим, нам хочется иметь трехиерный глобус и список городов, с указаниями их угловых координат и названий, по которым программа будет выводить на глобусе указатели городов и писать названия. Все это должно выглядеть так :
Допустим, мы легко можем изобразить вращающийся глобус и стрелки, указывающие города, но как определить, надо ли выводить название очередного города (не находиться ли он в данный момент на невидимой стороне) и в какой точке экрана он находиться ?
Для этого мы будем использовать следующие функции CUmmObject :
POINT3d GetExpoint (char *name) ; //получить положение доп. точки
POINT3d GetExpointOutPoint (int cx, int cy, char* name) ; //получить положение доп. точки на экране
Эти функции дают нам после вызова Tick(delta, TRUE) (или UseMatrixSettings()) или SetBaseState() :
1) Узнать положение в пространстве точки-центра с указанным именем.
2) Узнать положение на экране точки-центра с указанным именем (cx и cy - размеры буфера вывода).
Теперь решение очевидно :
1) В MicroModelator мы создаем у объекта - стрелки точку-центр (т.е. точку, определяющую положение надписи на экране).
2) В цикле вывода программы, для каждого города :
---->2.1) Находим матрицу стрелки, которая соответствует положению "указания на тукущий город" и применяем ее к стрелке, вызовом SetBaseState
---->2.2) Находим положение точки-центра. Если координата z>0, то получается, что стрелка указывает на город на задней стороне видимой сферы глобуса (чисто практические соображения), рисовать его не надо и мы переходим к следующему городу.
---->2.3) Рисуем стрелку, заодно определяем положение точки-центра на экране и пишем его название.
Все просто !
Программа идет в любом допустимом разрешении, глубина цвета - 16/24 бита определяется автоматически. Используется DirectDraw. Имеется возможность управлять способом отрисовки.
Предлагаются следующие файлы :
04.09.01