本文整理汇总了C++中BoxVolume::isInfinite方法的典型用法代码示例。如果您正苦于以下问题:C++ BoxVolume::isInfinite方法的具体用法?C++ BoxVolume::isInfinite怎么用?C++ BoxVolume::isInfinite使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BoxVolume
的用法示例。
在下文中一共展示了BoxVolume::isInfinite方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: intersect
OSG_BASE_DLLMAPPING
bool intersect(const BoxVolume &box1, const BoxVolume &box2)
{
bool retCode = false;
if(box1.isEmpty() == true || box2.isEmpty() == true)
{
retCode = false;
}
else if(box1.isInfinite() == true || box2.isInfinite() == true)
{
retCode = true;
}
else
{
retCode =
(box1.getMin()[0] <= box2.getMax()[0] &&
box1.getMax()[0] >= box2.getMin()[0] ) &&
(box1.getMin()[1] <= box2.getMax()[1] &&
box1.getMax()[1] >= box2.getMin()[1] ) &&
(box1.getMin()[2] <= box2.getMax()[2] &&
box1.getMax()[2] >= box2.getMin()[2] );
}
return retCode;
}
示例2: extend
OSG_BASE_DLLMAPPING
void extend(BoxVolume &srcVol, const BoxVolume &vol)
{
if( (!srcVol.isValid () && !srcVol.isEmpty()) ||
srcVol.isInfinite() ||
srcVol.isStatic () )
{
return;
}
if(!vol.isValid())
return;
if(srcVol.isEmpty())
{
if(vol.isEmpty())
{
return;
}
else
{
srcVol = vol;
return;
}
}
else if(vol.isEmpty())
{
return;
}
srcVol.setBounds(osgMin(vol.getMin().x(), srcVol.getMin().x()),
osgMin(vol.getMin().y(), srcVol.getMin().y()),
osgMin(vol.getMin().z(), srcVol.getMin().z()),
osgMax(vol.getMax().x(), srcVol.getMax().x()),
osgMax(vol.getMax().y(), srcVol.getMax().y()),
osgMax(vol.getMax().z(), srcVol.getMax().z()));
if(vol.isInfinite())
srcVol.setInfinite(true);
return;
}
示例3: pushVisibility
// visibility levels
bool RenderPartition::pushVisibility(Node * const pNode)
{
if(getFrustumCulling() == false)
return true;
FrustumVolume::PlaneSet inplanes = _visibilityStack.back();
if(inplanes == FrustumVolume::P_ALL)
{
_visibilityStack.push_back(inplanes);
return true;
}
Color3f col;
bool result = true;
FrustumVolume frustum = _oFrustum;
BoxVolume vol = pNode->getVolume();
// don't mess with infinite volumes
if(vol.isInfinite() == false)
{
pNode->updateVolume();
vol = pNode->getVolume();
#if 1
vol.transform(topMatrix());
#else
// not quite working
Matrix m = topMatrix();
m.invert();
frustum.transform(m);
#endif
}
if(_oDrawEnv.getStatCollector() != NULL)
{
_oDrawEnv.getStatCollector()->getElem(statCullTestedNodes)->inc();
}
if(intersect(frustum, vol, inplanes) == false)
{
result = false;
col.setValuesRGB(1,0,0);
if(_oDrawEnv.getStatCollector() != NULL)
{
_oDrawEnv.getStatCollector()->getElem(statCulledNodes)->inc();
}
}
else
{
if(inplanes == FrustumVolume::P_ALL)
{
col.setValuesRGB(0,1,0);
}
else
{
col.setValuesRGB(0,0,1);
}
}
if(getVolumeDrawing())
{
dropVolume(this, pNode, col);
}
_visibilityStack.push_back(inplanes);
return result;
}