Введение в программирование трехмерных игр с DX9

       

Типы ограничивающих объемов



11.4.2. Типы ограничивающих объемов

Чтобы упростить работу с ограничивающими сферами и ограничивающими параллелепипедами мы реализуем представляющие их классы в пространстве имен d3d:

struct BoundingBox { BoundingBox();

bool isPointInside(D3DXVECTOR3& p);

D3DXVECTOR3 _min; D3DXVECTOR3 _max; };

struct BoundingSphere { BoundingSphere();

D3DXVECTOR3 _center; float _radius; };

d3d::BoundingBox::BoundingBox() { // ограничивающий параллелепипед // бесконечно малого размера _min.x = d3d::INFINITY; _min.y = d3d::INFINITY; _min.z = d3d::INFINITY;

_max.x = -d3d::INFINITY; _max.y = -d3d::INFINITY; _max.z = -d3d::INFINITY; }

bool d3d::BoundingBox::isPointInside(D3DXVECTOR3& p) { // точка внутри ограничивающего параллелепипеда? if(p.x >= _min.x && p.y >= _min.y && p.z >= _min.z && p.x <= _max.x && p.y <= _max.y && p.z <= _max.z) { return true; } else { return false; } }

d3d::BoundingSphere::BoundingSphere() { _radius = 0.0f; }



Содержание раздела