本文整理汇总了C++中Vector2D::distanceTo方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector2D::distanceTo方法的具体用法?C++ Vector2D::distanceTo怎么用?C++ Vector2D::distanceTo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector2D
的用法示例。
在下文中一共展示了Vector2D::distanceTo方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: isInBetween
bool Line::isInBetween( Vector2D pos, Vector2D point1, Vector2D point2){
pos = getPointOnLineClosestTo( pos ); // get closest point
float dDist = point1.distanceTo( point2 ); // get distance between 2 pos
// if the distance from both points to the projection is smaller than this
// dist, the pos lies in between.
return pos.distanceTo( point1 ) <= dDist &&
pos.distanceTo( point2 ) <= dDist;
}
示例2:
double SurfaceToImplicit2::signedDistanceLocal(
const Vector2D& otherPoint) const {
Vector2D x = _surface->closestPoint(otherPoint);
Vector2D n = _surface->closestNormal(otherPoint);
n = (isNormalFlipped) ? -n : n;
if (n.dot(otherPoint - x) < 0.0) {
return -x.distanceTo(otherPoint);
} else {
return x.distanceTo(otherPoint);
}
}
示例3: isInside
bool Cone::isInside( Vector2D pos ) const {
float dist = pos.distanceTo( peak );
float angle = (pos - peak).getDirection();
return ( ( minDistance <= dist && dist <= maxDistance &&
isAngInInterval( angle, fstAngle, sndAngle ) ) ||
( dist == 0 && minDistance == 0) );
}
示例4: handleStimulus
void Animal::handleStimulus(Environment *environment, double dt) {
voiceInterval -= dt;
if (this == environment->getPlayer()) {
Vector2D movement = environment->getMovement();
movement = movement.mult(dt);
translate(movement);
handleCollisions(environment);
environment->updateObjectScreen(this);
if (movement.distanceTo(Vector2D()) > 1.0e-5) {
addEnergy(-dt);
}
for (int i = 0; i < sensors.size(); i++) {
sensors[i]->handleStimulus(this, environment, dt);
}
} else {
RandomNumberGenerator *rng = RandomNumberGenerator::getInstance();
if (curAIStateDuration > 0.0) {
curAIStateDuration -= dt;
} else {
curAIStateDuration = ((double) rng->getInt(500, 3000)) / 1000.0;
curAIDirection = Vector2D(rng->getInt(-1, 1), rng->getInt(-1, 1));
curAIDirection = curAIDirection.mult(speed);
}
Vector2D movement = curAIDirection;
movement = movement.mult(dt);
translate(movement);
handleCollisions(environment);
environment->updateObjectScreen(this);
}
}
示例5: kernel
Vector2D SphSystemData2::gradientAt(
size_t i,
const ConstArrayAccessor1<double>& values) const {
Vector2D sum;
auto p = positions();
auto d = densities();
const auto& neighbors = neighborLists()[i];
Vector2D origin = p[i];
SphSpikyKernel2 kernel(_kernelRadius);
const double m = mass();
for (size_t j : neighbors) {
Vector2D neighborPosition = p[j];
double dist = origin.distanceTo(neighborPosition);
if (dist > 0.0) {
Vector2D dir = (neighborPosition - origin) / dist;
sum
+= d[i] * m
* (values[i] / square(d[i]) + values[j] / square(d[j]))
* kernel.gradient(dist, dir);
}
}
return sum;
}
示例6: renderFeedback
void MultiDirectionalEar::renderFeedback(Object *object, Environment *environment) {
if (object == environment->getPlayer()) {
Vector2D windowPos = environment->getWindowPos(object->getPosition());
for (int i = 0; i < nearestObjects.size(); i++) {
Object *nearestObject = nearestObjects[i];
if (nearestObject->getVoice() && nearestObject->getVoiceInterval() <= 0.0) {
nearestObject->resetVoiceInterval();
Vector2D objectWindowPos = environment->getWindowPos(nearestObject->getPosition());
Vector2D relativePos = objectWindowPos.add(windowPos.mult(-1.0));
relativePos = relativePos.normalize();
double pan = relativePos.getX();
double nearestObjectDistance = windowPos.distanceTo(objectWindowPos);
double gain = 1.0 - (nearestObjectDistance / 1000.0);
if (gain < 0.0) {
gain = 0.0;
}
al_play_sample(nearestObject->getVoice(), gain, pan, 1.0, ALLEGRO_PLAYMODE_ONCE, NULL);
}
}
}
}
示例7:
double Surface2::closestDistanceLocal(const Vector2D& otherPointLocal) const {
return otherPointLocal.distanceTo(closestPointLocal(otherPointLocal));
}
示例8: distanceToPoint
float Line::distanceToPoint( Vector2D pos ){
return pos.distanceTo( getPointOnLineClosestTo( pos ) );
}