本文整理汇总了C++中Vector2D::scale方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector2D::scale方法的具体用法?C++ Vector2D::scale怎么用?C++ Vector2D::scale使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector2D
的用法示例。
在下文中一共展示了Vector2D::scale方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cohesion
void Boid::cohesion(deque<Boid*>& neighbours) {
Vector2D vForce;
float neighborCount = 0;
Vector2D vCenterOfMass;
deque<Boid*>::iterator itBoid;
for(itBoid = neighbours.begin(); itBoid != neighbours.end(); ++itBoid) {
if(*itBoid == this) continue;
vCenterOfMass.add((*itBoid)->getVelocity());
++neighborCount;
}
if(neighborCount > 0) {
vCenterOfMass.devide(neighborCount);
if(vCenterOfMass.distanceToSQ(getVelocity()) > 5.0f * 5.0f) {
Vector2D vel = vCenterOfMass;
Vector2D pos = position;
pos.normalize();
vel.subtract(pos);
vel.subtract(getVelocity());
vel.scale(0.1);
velocity.add(vel);
}
}
}
示例2: AdjustKickPoint
Position Knowledge::AdjustKickPoint(Vector2D ballPos, Vector2D target, int kickSpeed)
{
Position p;
Vector2D dir = (ballPos - target).normalizedVector();
dir.scale(ROBOT_RADIUS - (35 - kickSpeed));
p.loc = ballPos + dir;
p.dir = (-dir).dir().radian();
return p;
}
示例3: if
Vector2D Physics2D::ReferenceFrame::velocity() const
{
if(bodies.size() == 0)
return customVelocity;
else if(bodies.size() == 1) //optimization for 1 body
return bodies[0]->velocity;
else
{
Vector2D totalVelocity;
double totalMass = 0;
for(unsigned i = 0; i < bodies.size(); i++)
{
const Body2D& b = *(bodies[i]);
totalVelocity.add(b.velocity.times(b.mass));
totalMass += b.mass;
}
if(totalMass != 0) // this is for safety: obviously a total mass of 0 is something wrong...
totalVelocity.scale(1.0/totalMass);
return totalVelocity;
}
}