本文整理汇总了C++中Vector2D::getLength方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector2D::getLength方法的具体用法?C++ Vector2D::getLength怎么用?C++ Vector2D::getLength使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector2D
的用法示例。
在下文中一共展示了Vector2D::getLength方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getSteering
Steering* DynamicArriveSteering::getSteering()
{
Vector2D direction = mpTarget->getPosition() - mpMover->getPosition();
float distance = direction.getLength();
//are we there?
if( distance < mTargetRadius )
{
mLinear = gZeroVector2D;
mAngular = 0.0f;
return this;
}
float targetSpeed = 0.0f;
//are we outside slow radius?
if( distance > mSlowRadius )
{
targetSpeed = mpMover->getMaxVelocity();
}
else
{
targetSpeed = ( mpMover->getMaxVelocity() * distance ) / mSlowRadius;
}
//combine speed and direction to get targetVelocity
Vector2D targetVelocity = direction;
targetVelocity.normalize();
targetVelocity *= targetSpeed;
//set acceleration
mLinear = targetVelocity - mpMover->getVelocity();
mLinear /= mTimeToTarget;
//check if too fast
if( mLinear.getLength() > mpMover->getMaxAcceleration() )
{
//cut down to max
mLinear.normalize();
mLinear*= mpMover->getMaxAcceleration();
}
mAngular = 0.0f;
return this;
}
示例2: getSteering
Steering* WanderAndSeekOrFlee::getSteering()
{
Vector2D direction = mpTarget->getPosition() - mpMover->getPosition();
float distance = direction.getLength();
ALLEGRO_COLOR color;
if (mShouldFlee)
color = al_map_rgb(0, 0, 0);
else
color = al_map_rgb(0, 191, 255);
if (debugOn)
al_draw_circle(mpMover->getPosition().getX(), mpMover->getPosition().getY(), mRadius, color, 2.0f);
if (distance > mRadius)
return mpDynamicWanderSteering->getSteering();
else
return mpDynamicSeekSteering->getSteering();
}