当前位置: 首页>>代码示例>>C++>>正文


C++ Mover::predictFuturePosition方法代码示例

本文整理汇总了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);
}
开发者ID:labe-me,项目名称:MindPaint,代码行数:53,代码来源:Mover.cpp

示例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);
}
开发者ID:labe-me,项目名称:MindPaint,代码行数:12,代码来源:Mover.cpp


注:本文中的Mover::predictFuturePosition方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。