本文整理汇总了C++中VertexData::getLongestAxis方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexData::getLongestAxis方法的具体用法?C++ VertexData::getLongestAxis怎么用?C++ VertexData::getLongestAxis使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VertexData
的用法示例。
在下文中一共展示了VertexData::getLongestAxis方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setupTree
/* Begin kd-tree setup, go through full range starting with x axis. */
void VertexBufferRoot::setupTree( VertexData& data )
{
// data is VertexData, _data is VertexBufferData
_data.clear();
const Axis axis = data.getLongestAxis( 0, data.triangles.size() );
VertexBufferNode::setupTree( data, 0, data.triangles.size(),
axis, 0, _data );
VertexBufferNode::updateBoundingSphere();
VertexBufferNode::updateRange();
#if 0
// re-test all points to be in the bounding sphere
Vertex center( _boundingSphere.array );
float radius = _boundingSphere.w();
float radiusSquared = radius * radius;
for( size_t offset = 0; offset < _data.vertices.size(); ++offset )
{
const Vertex& vertex = _data.vertices[ offset ];
const Vertex centerToPoint = vertex - center;
const float distanceSquared = centerToPoint.squared_length();
EQASSERTINFO( distanceSquared <= radiusSquared,
distanceSquared << " > " << radiusSquared );
}
#endif
}
示例2: setupTree
/* Continue kd-tree setup, create intermediary or leaf nodes as required. */
void VertexBufferNode::setupTree( VertexData& data, const Index start,
const Index length, const Axis axis,
const size_t depth,
VertexBufferData& globalData,
boost::progress_display& progress )
{
data.sort( start, length, axis );
const Index median = start + ( length / 2 );
// left child will include elements smaller than the median
const Index leftLength = length / 2;
const bool subdivideLeft = _subdivide( leftLength, depth );
if( subdivideLeft )
_left = new VertexBufferNode;
else
_left = new VertexBufferLeaf( globalData );
// right child will include elements equal to or greater than the median
const Index rightLength = ( length + 1 ) / 2;
const bool subdivideRight = _subdivide( rightLength, depth );
if( subdivideRight )
_right = new VertexBufferNode;
else
_right = new VertexBufferLeaf( globalData );
// move to next axis and continue contruction in the child nodes
const Axis newAxisLeft = subdivideLeft ?
data.getLongestAxis( start , leftLength ) : AXIS_X;
const Axis newAxisRight = subdivideRight ?
data.getLongestAxis( median, rightLength ) : AXIS_X;
static_cast< VertexBufferNode* >
( _left )->setupTree( data, start, leftLength, newAxisLeft, depth+1,
globalData, progress );
static_cast< VertexBufferNode* >
( _right )->setupTree( data, median, rightLength, newAxisRight, depth+1,
globalData, progress );
if( depth == 3 )
++progress;
}
示例3: setupTree
/* Begin kd-tree setup, go through full range starting with x axis. */
void VertexBufferRoot::setupTree( VertexData& data,
boost::progress_display& progress )
{
// data is VertexData, _data is VertexBufferData
_data.clear();
const Axis axis = data.getLongestAxis( 0, data.triangles.size() );
VertexBufferNode::setupTree( data, 0, data.triangles.size(),
axis, 0, _data, progress );
VertexBufferNode::updateBoundingSphere();
VertexBufferNode::updateRange();
}