本文整理汇总了C++中Mover::predictFuturePosition方法的典型用法代码示例。如果您正苦于以下问题:C++ Mover::predictFuturePosition方法的具体用法?C++ Mover::predictFuturePosition怎么用?C++ Mover::predictFuturePosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mover
的用法示例。
在下文中一共展示了Mover::predictFuturePosition方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: computePursuitSteering
ofPoint Mover::computePursuitSteering(const Mover &mover, const float maxPredictionTime) const {
ofPoint offset = mover.pos - pos;
float dist = offset.length();
float parallelness = vel.normalized().dot(mover.vel.normalized());
float quaryForwardness = vel.normalized().dot(offset.normalized());
float directTravelTime = vel.normalized().dot(offset.normalized());
int f = intervalCompare(quaryForwardness, -0.707, 0.707);
int p = intervalCompare(parallelness, -0.707, 0.707);
float timeFactor = 0;
switch (f) {
case 1:
switch (p) {
case 1: // ahead, parallel
timeFactor = 4;
break;
case 0: // ahead, perpendicular
timeFactor = 1.8;
break;
case -1: // ahead, anti-parallel
timeFactor = 0.85;
break;
}
break;
case 0:
switch (p){
case 1: // aside, parallel
timeFactor = 1;
break;
case 0: // aside, perpendicular
timeFactor = 0.8;
break;
case -1: // aside, anti-parallel
timeFactor = 4;
break;
}
case -1:
switch (p){
case 1: // behind, parallel
timeFactor = 0.5;
break;
case 0: // behind, perpendicular
timeFactor = 2;
break;
case -1: // behind, anti-parallel
timeFactor = 2;
break;
}
}
float et = directTravelTime * timeFactor;
float etl = (et > maxPredictionTime) ? maxPredictionTime : et;
ofPoint target = mover.predictFuturePosition(etl);
return computeSteering(target, false);
}
示例2: computeEvadeSteering
ofPoint Mover::computeEvadeSteering(const Mover &mover, const float maxPredictionTime) const {
ofPoint offset = mover.pos - pos;
float dist = offset.length();
float dangerSpeed = mover.vel.length();
if (dangerSpeed == 0.0f)
dangerSpeed = 1.0f;
float time = dist / dangerSpeed;
if (time > maxPredictionTime)
time = maxPredictionTime;
ofPoint target = mover.predictFuturePosition(time);
return computeFleeSteering(target);
}