本文整理汇总了C++中Vector2D::getMagnitude方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector2D::getMagnitude方法的具体用法?C++ Vector2D::getMagnitude怎么用?C++ Vector2D::getMagnitude使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector2D
的用法示例。
在下文中一共展示了Vector2D::getMagnitude方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: spawnPlayer
void Server::spawnPlayer(Player *player)
{
std::vector<SpawnpointMarker*> validPositions;
SpawnpointMarker *bestSpawn;
for(SpawnPool::iterator ii = spawns.begin(); ii != spawns.end(); ++ii)
{
bool isSpawnOK = true;
for (Entpool::iterator jj = entities.begin(); jj != entities.end(); ++jj)
{
if(jj->second->getEntId() == (*ii)->getEntId())
continue;
Vector2D displacement = (jj->second->getPosition().positionVector() - (*ii)->getPosition().positionVector());
if (displacement.getMagnitude() < 40.0f) {
isSpawnOK = false;
break;
}
}
if((*ii)->team != team_free && (*ii)->team != player->getTeam())
isSpawnOK = false;
if (isSpawnOK)
validPositions.push_back(*ii);
}
if(spawns.size() == 0)
{
player->setPosition(Position(0,0));
}
else if(validPositions.size() == 0) // All spawn points are filled, so pick
{ // one at random. - This causes ships to spawn on top of each other [eric]
bestSpawn = spawns[ rand()%spawns.size() ];
player->setPosition(bestSpawn->getPosition());
}
else
{
bestSpawn = validPositions[ rand()%validPositions.size() ];
player->setPosition(bestSpawn->getPosition());
}
}
示例2: radiansToDegrees
double Vector2D::getAngleBetween(const Vector2D &other) const {
double rad = this->dotProduct(other) / (this->getMagnitude() * other.getMagnitude());
return radiansToDegrees(acos(rad));
}