который имеет четыре вершины, определяющие
Начнем с исключительно простой фигуры — прямоугольника, который имеет четыре вершины, определяющие одну грань. Запустив приложение Shapes, вы найдете в меню Edit несколько команд с названиями фигур. Выберем команду Flat Face (то есть «плоская фигура»). Вот как выглядит ее программная реализация:
void CMainFrame::OnEditInsface() {
// Вставить простую плоскую грань
//и задать список вершин
D3DVECTOR vlist [] = (
На первый взгляд понятие «ненерпендикулярная нормаль» кажется внутренне протинорсчи-liliiM, однако если гопорить о нормалях к псршипам, а нс к граням, то ему можно придать смысл. — Иршчеч. пере».
Создание простых фигур <¦Ц 97
(-2, -2, -2},
t-2, -2, 2>,
{ 2, -2, 2},
{ 2, -2, -2} };
// Получить количество вершин в массиве
int nv = sizeof(vlist) / sizeof(D3DVECTOR);
// Определить вершины, входящие в каждую грань, // в формате:
// количество, вершина!, вершина2 и т. д. int flist [] = (4, О, 1, 2, 3, // 4 вершины, ...
О // Конец списка данных грани );
// Создать для фигуры новый макет NewScene ();
// Создать фигуру по списку вершин // и списку данных грани m pShape = new C3dShape;
m_p3hape-»Create (vlist, nv, flist);
// Присоединить фигуру к макету m_pScene-»AddChild(m_pShape) ;
}
Вершины грани содержатся в массиве векторов vlist. Каждый вектор определяет одну из четырех вершин, лежащих в плоскости у =-2. Прямоугольник имеет размеры 4х4 единицы. Первый вектор определяет ближнюю левую вершину, второй — дальнюю левую, третий — дальнюю правую и четвертый — ближнюю правую. Другими словами, мы обходим вершины по часовой стрелке.
Для определения фигуры используется целочисленный массив с информацией о грани, flist. Каждая грань в списке описывается количеством входящих в нее вершин, за которыми следует индекс каждой вершины в массиве vlist. Список граней завершается нулем. Он может содержать информацию о нескольких гранях, но в нашем случае определяется всего одна. Обратите внимание на то, что вершины пронумерованы в порядке О, 1, 2, 3, что соответствует их обходу по часовой стрелке, начиная с ближней левой, если смотреть на грань сверху. Поскольку грань находится в плоскости у =-2, она расположена ниже камеры (точки О, О, -10) и, следовательно, попадает в кадр.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий