ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX



         

Проверка попадания - часть 7


^йй ВЫЛРПЙНИА япйгп nfi'^Rkra ''m^.

171

m_pSelBox-»AddChild(&r6) ;

r7.CreateRod(x2, y2, zl, x2, y2, z2, r) ;

m_pSelBox-»AddChild(&r7) ;

r8.CreateRod(x2, yl, zl, x2, yl, z2, r) ;

m_p3elBox-»AddChild(&r8) ;

r9.CreateRod(xl, yl, z2, xl, y2, z2, r) ;

m_pSelBox-»AddChild(&r9) ;

rIO.CreateRodfxl, yl, z2, x2, yl, z2, r) ;

m_pSelBox-»AddChild(&rlO) ; • rll.CreateRod(x2, yl, z2, x2, y2, z2, r) ;

m_pSelBox-»AddChild(&rll) ;

rl2.CreateRod(xl, y2, z2, x2, y2, z2, r) ;

m_pSelBox-»AddChild(&rl2) ;

//Создать цилиндры и конусы для отображения векторов rd.CreateRod(0, 0, 0, 0, 0, z2 * 1.2, r) ;

m pSelBox-»AddChild (&rd) ;

cd.CreateCone(0, 0, z2 * 1.2, re, TRUE, О, О, z2 * 1.4, 0, FALSE);

m_p3elBox-»AddChild(&cd) ;

ru.CreateRod(0, 0, 0, 0, y2 * 1.1, 0, r) ;

m_pSelBox-»AddChild(&ru) ;

cu.CreateCone(0, y2 • 1.1, 0, re, TRUE, 0, y2 * 1.2, О, О, FALSE) ;

m_pSelBox-»AddChild(&cu) ;

// Задать положение и ориентацию рамки

// в соответствии с положением и ориентацией фигуры

double х, у, z, xd, yd, zd, xu, yu, zu;

m pCurShape-»GetPosition (х, y, z) ;

m_pCurShape-»GetDirection (xd, yd, zd, xu, yu, zu) ;

m_pSelBox-»SetPosition (х, y, z) ;

m_pSelBox-»SetDirection (xd, yd, zd, xu, yu, zu) ;

// Присоединить рамку к текущей фигуре,

// чтобы обеспечить их совместное перемещение

m_pCurShape-»AddChild (m_pSelBox) ;

Граничная область фигуры используется для задания положения цилиндров, образующих рамку, и пар конус/цилиндр, которые изображают вектор направления и верхний вектор объекта. Все цилиндры и конусы присоединяются к одному объекту-рамке, имеющему то же положение и ориентацию, что и выделенный объект. Затем рамка присоединяется к выделенному объекту, чтобы она перемещалась вместе с ним.

Поскольку рамка также состоит из нескольких визуальных элементов, можно задать резонный вопрос — почему их нельзя выделить мышью? В уведомляющей функции на стр. 167 можно найти следующий оператор:

pShape-»IsPartOf (pThis-»m_pSelBox) 172 ад1'' Глава 7. Проверка попадания




Содержание  Назад  Вперед