本文整理汇总了C++中V_Vector3::begin方法的典型用法代码示例。如果您正苦于以下问题:C++ V_Vector3::begin方法的具体用法?C++ V_Vector3::begin怎么用?C++ V_Vector3::begin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类V_Vector3
的用法示例。
在下文中一共展示了V_Vector3::begin方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: JitterInstanceOffsets
void CreateTool::JitterInstanceOffsets( float instanceRadius, float maxJitter, V_Vector3& offsets )
{
V_Vector3 jitterVectors;
jitterVectors.push_back( Editor::UpVector );
jitterVectors.push_back( Editor::OutVector );
V_Vector3::iterator itr = offsets.begin();
V_Vector3::iterator end = offsets.end();
for ( ; itr != end; ++itr )
{
V_Vector3::const_iterator jitterItr = jitterVectors.begin();
V_Vector3::const_iterator jitterEnd = jitterVectors.end();
for ( ; jitterItr != jitterEnd; ++jitterItr )
{
int searchTries = 10;
while ( searchTries > 0 )
{
--searchTries;
float jitter = ( rand() / ( (float) RAND_MAX + 1.0f ) ) * 2.0f - 1.0f;
float randomNumber = rand() / ( (float) RAND_MAX + 1.0f );
float testNumber = GetNormalProbabilityFromPercent( jitter );
if ( randomNumber <= testNumber )
{
(*itr) += (*jitterItr) * jitter * maxJitter;
searchTries = 0;
}
}
}
}
}
示例2: RandomizeInstanceOffsets
void CreateTool::RandomizeInstanceOffsets( V_Vector3& offsets )
{
V_Vector3 newOffsets;
newOffsets.reserve( offsets.size() );
while ( offsets.size() )
{
V_Vector3::iterator itr = offsets.begin() + ( rand() % offsets.size() );
newOffsets.push_back( *itr );
offsets.erase( itr );
}
V_Vector3::iterator itr = newOffsets.begin();
V_Vector3::iterator end = newOffsets.end();
for ( ; itr != end; ++itr )
{
offsets.push_back( *itr );
}
}
示例3: Transform
void AlignedBox::Transform(const Matrix4& matrix)
{
// get the currents sample bounds
V_Vector3 vertices;
GetVertices( vertices );
// reseed this box
Reset();
// iterate and resample the bounds
V_Vector3::iterator itr = vertices.begin();
V_Vector3::iterator end = vertices.end();
for ( ; itr != end; ++itr )
{
// transform the sample
matrix.TransformVertex( *itr );
// test the sample
Test( *itr );
}
}
示例4: SelectInstanceOffsets
void CreateTool::SelectInstanceOffsets( DistributionStyle style, float radius, V_Vector3& offsets )
{
V_Vector3 selectedOffsets;
selectedOffsets.reserve( offsets.size() );
V_Vector3::iterator itr = offsets.begin();
V_Vector3::iterator end = offsets.end();
for ( ; itr != end; ++itr )
{
switch ( style )
{
case DistributionStyles::Uniform:
{
float randomNumber = rand() / ( (float) RAND_MAX + 1.0f );
if ( randomNumber <= 0.5f )
{
selectedOffsets.push_back( *itr );
}
break;
}
case DistributionStyles::Linear:
{
float radiusPercent = (*itr).Length() / radius;
float randomNumber = rand() / ( (float) RAND_MAX + 1.0f );
float testNumber = 1.0f - radiusPercent;
if ( randomNumber <= testNumber )
{
selectedOffsets.push_back( *itr );
}
break;
}
case DistributionStyles::Normal:
{
float radiusPercent = (*itr).Length() / radius;
float randomNumber = rand() / ( (float) RAND_MAX + 1.0f );
float testNumber = GetNormalProbabilityFromPercent( radiusPercent );
if ( randomNumber <= testNumber )
{
selectedOffsets.push_back( *itr );
}
break;
}
case DistributionStyles::Constant:
default:
selectedOffsets.push_back( *itr );
break;
}
}
offsets.clear();
offsets.reserve( selectedOffsets.size() );
itr = selectedOffsets.begin();
end = selectedOffsets.end();
for ( ; itr != end; ++itr )
{
offsets.push_back( *itr );
}
}