📄 pass.cpp
字号:
offenseFactors.dashDist.minWeight = config["Pass"]["DashDistance"]["MinWeight"][1].asFloat(); offenseFactors.dashDist.maxWeight = config["Pass"]["DashDistance"]["MaxWeight"][1].asFloat(); offenseFactors.breakOffside.minValue = config["Pass"]["BreakOffsideLine"]["MinValue"][1].asFloat(); offenseFactors.breakOffside.maxValue = config["Pass"]["BreakOffsideLine"]["MaxValue"][1].asFloat(); offenseFactors.breakOffside.minWeight = config["Pass"]["BreakOffsideLine"]["MinWeight"][1].asFloat(); offenseFactors.breakOffside.maxWeight = config["Pass"]["BreakOffsideLine"]["MaxWeight"][1].asFloat(); offenseFactors.passedOppNum.minValue = config["Pass"]["PassedOppNum"]["MinValue"][1].asFloat(); offenseFactors.passedOppNum.maxValue = config["Pass"]["PassedOppNum"]["MaxValue"][1].asFloat(); offenseFactors.passedOppNum.minWeight = config["Pass"]["PassedOppNum"]["MinWeight"][1].asFloat(); offenseFactors.passedOppNum.maxWeight = config["Pass"]["PassedOppNum"]["MaxWeight"][1].asFloat(); offenseFactors.statusOppNum.minValue = config["Pass"]["StatusOppNum"]["MinValue"][1].asFloat(); offenseFactors.statusOppNum.maxValue = config["Pass"]["StatusOppNum"]["MaxValue"][1].asFloat(); offenseFactors.statusOppNum.minWeight = config["Pass"]["StatusOppNum"]["MinWeight"][1].asFloat(); offenseFactors.statusOppNum.maxWeight = config["Pass"]["StatusOppNum"]["MaxWeight"][1].asFloat(); offenseFactors.securityDeltaCycle.minValue = config["Pass"]["SecurityDeltaCycle"]["MinValue"][1].asFloat(); offenseFactors.securityDeltaCycle.maxValue = config["Pass"]["SecurityDeltaCycle"]["MaxValue"][1].asFloat(); offenseFactors.securityDeltaCycle.minWeight = config["Pass"]["SecurityDeltaCycle"]["MinWeight"][1].asFloat(); offenseFactors.securityDeltaCycle.maxWeight = config["Pass"]["SecurityDeltaCycle"]["MaxWeight"][1].asFloat(); offenseFactors.statusOppDist.minValue = config["Pass"]["StatusOppDistance"]["MinValue"][1].asFloat(); offenseFactors.statusOppDist.maxValue = config["Pass"]["StatusOppDistance"]["MaxValue"][1].asFloat(); offenseFactors.statusOppDist.minWeight = config["Pass"]["StatusOppDistance"]["MinWeight"][1].asFloat(); offenseFactors.statusOppDist.maxWeight = config["Pass"]["StatusOppDistance"]["MaxWeight"][1].asFloat(); offenseFactors.statusOppDir.minValue = config["Pass"]["StatusOppDirection"]["MinValue"][1].asFloat(); offenseFactors.statusOppDir.maxValue = config["Pass"]["StatusOppDirection"]["MaxValue"][1].asFloat(); offenseFactors.statusOppDir.minWeight = config["Pass"]["StatusOppDirection"]["MinWeight"][1].asFloat(); offenseFactors.statusOppDir.maxWeight = config["Pass"]["StatusOppDirection"]["MaxWeight"][1].asFloat(); offenseFactors.statusShoot.minValue = config["Pass"]["StatusShoot"]["MinValue"][1].asFloat(); offenseFactors.statusShoot.maxValue = config["Pass"]["StatusShoot"]["MaxValue"][1].asFloat(); offenseFactors.statusShoot.minWeight = config["Pass"]["StatusShoot"]["MinWeight"][1].asFloat(); offenseFactors.statusShoot.maxWeight = config["Pass"]["StatusShoot"]["MaxWeight"][1].asFloat(); offenseFactors.dribblePath.minValue = config["Pass"]["DribblePath"]["MinValue"][1].asFloat(); offenseFactors.dribblePath.maxValue = config["Pass"]["DribblePath"]["MaxValue"][1].asFloat(); offenseFactors.dribblePath.minWeight = config["Pass"]["DribblePath"]["MinWeight"][1].asFloat(); offenseFactors.dribblePath.maxWeight = config["Pass"]["DribblePath"]["MaxWeight"][1].asFloat(); offenseFactors.defenseLine.minValue = config["Pass"]["DefenseLine"]["MinValue"][1].asFloat(); offenseFactors.defenseLine.maxValue = config["Pass"]["DefenseLine"]["MaxValue"][1].asFloat(); offenseFactors.defenseLine.minWeight = config["Pass"]["DefenseLine"]["MinWeight"][1].asFloat(); offenseFactors.defenseLine.maxWeight = config["Pass"]["DefenseLine"]["MaxWeight"][1].asFloat(); offenseFactors.extraCatch.minValue = config["Pass"]["ExtraCatch"]["MinValue"][1].asFloat(); offenseFactors.extraCatch.maxValue = config["Pass"]["ExtraCatch"]["MaxValue"][1].asFloat(); offenseFactors.extraCatch.minWeight = config["Pass"]["ExtraCatch"]["MinWeight"][1].asFloat(); offenseFactors.extraCatch.maxWeight = config["Pass"]["ExtraCatch"]["MaxWeight"][1].asFloat(); // secureBallFactors secureBallFactors.posDev.minValue = config["Pass"]["PosDeviation"]["MinValue"][2].asFloat(); secureBallFactors.posDev.maxValue = config["Pass"]["PosDeviation"]["MaxValue"][2].asFloat(); secureBallFactors.posDev.minWeight = config["Pass"]["PosDeviation"]["MinWeight"][2].asFloat(); secureBallFactors.posDev.maxWeight = config["Pass"]["PosDeviation"]["MaxWeight"][2].asFloat(); secureBallFactors.offense.minValue = config["Pass"]["Offense"]["MinValue"][2].asFloat(); secureBallFactors.offense.maxValue = config["Pass"]["Offense"]["MaxValue"][2].asFloat(); secureBallFactors.offense.minWeight = config["Pass"]["Offense"]["MinWeight"][2].asFloat(); secureBallFactors.offense.maxWeight = config["Pass"]["Offense"]["MaxWeight"][2].asFloat(); secureBallFactors.seeInfo.minValue = config["Pass"]["SeeInformation"]["MinValue"][2].asFloat(); secureBallFactors.seeInfo.maxValue = config["Pass"]["SeeInformation"]["MaxValue"][2].asFloat(); secureBallFactors.seeInfo.minWeight = config["Pass"]["SeeInformation"]["MinWeight"][2].asFloat(); secureBallFactors.seeInfo.maxWeight = config["Pass"]["SeeInformation"]["MaxWeight"][2].asFloat(); secureBallFactors.ballDist.minValue = config["Pass"]["BallDistance"]["MinValue"][2].asFloat(); secureBallFactors.ballDist.maxValue = config["Pass"]["BallDistance"]["MaxValue"][2].asFloat(); secureBallFactors.ballDist.minWeight = config["Pass"]["BallDistance"]["MinWeight"][2].asFloat(); secureBallFactors.ballDist.maxWeight = config["Pass"]["BallDistance"]["MaxWeight"][2].asFloat(); secureBallFactors.dashDist.minValue = config["Pass"]["DashDistance"]["MinValue"][2].asFloat(); secureBallFactors.dashDist.maxValue = config["Pass"]["DashDistance"]["MaxValue"][2].asFloat(); secureBallFactors.dashDist.minWeight = config["Pass"]["DashDistance"]["MinWeight"][2].asFloat(); secureBallFactors.dashDist.maxWeight = config["Pass"]["DashDistance"]["MaxWeight"][2].asFloat(); secureBallFactors.breakOffside.minValue = config["Pass"]["BreakOffsideLine"]["MinValue"][2].asFloat(); secureBallFactors.breakOffside.maxValue = config["Pass"]["BreakOffsideLine"]["MaxValue"][2].asFloat(); secureBallFactors.breakOffside.minWeight = config["Pass"]["BreakOffsideLine"]["MinWeight"][2].asFloat(); secureBallFactors.breakOffside.maxWeight = config["Pass"]["BreakOffsideLine"]["MaxWeight"][2].asFloat(); secureBallFactors.passedOppNum.minValue = config["Pass"]["PassedOppNum"]["MinValue"][2].asFloat(); secureBallFactors.passedOppNum.maxValue = config["Pass"]["PassedOppNum"]["MaxValue"][2].asFloat(); secureBallFactors.passedOppNum.minWeight = config["Pass"]["PassedOppNum"]["MinWeight"][2].asFloat(); secureBallFactors.passedOppNum.maxWeight = config["Pass"]["PassedOppNum"]["MaxWeight"][2].asFloat(); secureBallFactors.statusOppNum.minValue = config["Pass"]["StatusOppNum"]["MinValue"][2].asFloat(); secureBallFactors.statusOppNum.maxValue = config["Pass"]["StatusOppNum"]["MaxValue"][2].asFloat(); secureBallFactors.statusOppNum.minWeight = config["Pass"]["StatusOppNum"]["MinWeight"][2].asFloat(); secureBallFactors.statusOppNum.maxWeight = config["Pass"]["StatusOppNum"]["MaxWeight"][2].asFloat(); secureBallFactors.securityDeltaCycle.minValue = config["Pass"]["SecurityDeltaCycle"]["MinValue"][2].asFloat(); secureBallFactors.securityDeltaCycle.maxValue = config["Pass"]["SecurityDeltaCycle"]["MaxValue"][2].asFloat(); secureBallFactors.securityDeltaCycle.minWeight = config["Pass"]["SecurityDeltaCycle"]["MinWeight"][2].asFloat(); secureBallFactors.securityDeltaCycle.maxWeight = config["Pass"]["SecurityDeltaCycle"]["MaxWeight"][2].asFloat(); secureBallFactors.statusOppDist.minValue = config["Pass"]["StatusOppDistance"]["MinValue"][2].asFloat(); secureBallFactors.statusOppDist.maxValue = config["Pass"]["StatusOppDistance"]["MaxValue"][2].asFloat(); secureBallFactors.statusOppDist.minWeight = config["Pass"]["StatusOppDistance"]["MinWeight"][2].asFloat(); secureBallFactors.statusOppDist.maxWeight = config["Pass"]["StatusOppDistance"]["MaxWeight"][2].asFloat(); secureBallFactors.statusOppDir.minValue = config["Pass"]["StatusOppDirection"]["MinValue"][2].asFloat(); secureBallFactors.statusOppDir.maxValue = config["Pass"]["StatusOppDirection"]["MaxValue"][2].asFloat(); secureBallFactors.statusOppDir.minWeight = config["Pass"]["StatusOppDirection"]["MinWeight"][2].asFloat(); secureBallFactors.statusOppDir.maxWeight = config["Pass"]["StatusOppDirection"]["MaxWeight"][2].asFloat(); secureBallFactors.statusShoot.minValue = config["Pass"]["StatusShoot"]["MinValue"][2].asFloat(); secureBallFactors.statusShoot.maxValue = config["Pass"]["StatusShoot"]["MaxValue"][2].asFloat(); secureBallFactors.statusShoot.minWeight = config["Pass"]["StatusShoot"]["MinWeight"][2].asFloat(); secureBallFactors.statusShoot.maxWeight = config["Pass"]["StatusShoot"]["MaxWeight"][2].asFloat(); secureBallFactors.dribblePath.minValue = config["Pass"]["DribblePath"]["MinValue"][2].asFloat(); secureBallFactors.dribblePath.maxValue = config["Pass"]["DribblePath"]["MaxValue"][2].asFloat(); secureBallFactors.dribblePath.minWeight = config["Pass"]["DribblePath"]["MinWeight"][2].asFloat(); secureBallFactors.dribblePath.maxWeight = config["Pass"]["DribblePath"]["MaxWeight"][2].asFloat(); secureBallFactors.defenseLine.minValue = config["Pass"]["DefenseLine"]["MinValue"][2].asFloat(); secureBallFactors.defenseLine.maxValue = config["Pass"]["DefenseLine"]["MaxValue"][2].asFloat(); secureBallFactors.defenseLine.minWeight = config["Pass"]["DefenseLine"]["MinWeight"][2].asFloat(); secureBallFactors.defenseLine.maxWeight = config["Pass"]["DefenseLine"]["MaxWeight"][2].asFloat(); secureBallFactors.extraCatch.minValue = config["Pass"]["ExtraCatch"]["MinValue"][2].asFloat(); secureBallFactors.extraCatch.maxValue = config["Pass"]["ExtraCatch"]["MaxValue"][2].asFloat(); secureBallFactors.extraCatch.minWeight = config["Pass"]["ExtraCatch"]["MinWeight"][2].asFloat(); secureBallFactors.extraCatch.maxWeight = config["Pass"]["ExtraCatch"]["MaxWeight"][2].asFloat(); // breakOffsideFactors breakOffsideFactors.posDev.minValue = config["Pass"]["PosDeviation"]["MinValue"][3].asFloat(); breakOffsideFactors.posDev.maxValue = config["Pass"]["PosDeviation"]["MaxValue"][3].asFloat(); breakOffsideFactors.posDev.minWeight = config["Pass"]["PosDeviation"]["MinWeight"][3].asFloat(); breakOffsideFactors.posDev.maxWeight = config["Pass"]["PosDeviation"]["MaxWeight"][3].asFloat(); breakOffsideFactors.offense.minValue = config["Pass"]["Offense"]["MinValue"][3].asFloat(); breakOffsideFactors.offense.maxValue = config["Pass"]["Offense"]["MaxValue"][3].asFloat(); breakOffsideFactors.offense.minWeight = config["Pass"]["Offense"]["MinWeight"][3].asFloat(); breakOffsideFactors.offense.maxWeight = config["Pass"]["Offense"]["MaxWeight"][3].asFloat(); breakOffsideFactors.seeInfo.minValue = config["Pass"]["SeeInformation"]["MinValue"][3].asFloat(); breakOffsideFactors.seeInfo.maxValue = config["Pass"]["SeeInformation"]["MaxValue"][3].asFloat(); breakOffsideFactors.seeInfo.minWeight = config["Pass"]["SeeInformation"]["MinWeight"][3].asFloat(); breakOffsideFactors.seeInfo.maxWeight = config["Pass"]["SeeInformation"]["MaxWeight"][3].asFloat(); breakOffsideFactors.ballDist.minValue = config["Pass"]["BallDistance"]["MinValue"][3].asFloat(); breakOffsideFactors.ballDist.maxValue = config["Pass"]["BallDistance"]["MaxValue"][3].asFloat(); breakOffsideFactors.ballDist.minWeight = config["Pass"]["BallDistance"]["MinWeight"][3].asFloat(); breakOffsideFactors.ballDist.maxWeight = config["Pass"]["BallDistance"]["MaxWeight"][3].asFloat(); breakOffsideFactors.dashDist.minValue = config["Pass"]["DashDistance"]["MinValue"][3].asFloat(); breakOffsideFactors.dashDist.maxValue = config["Pass"]["DashDistance"]["MaxValue"][3].asFloat(); breakOffsideFactors.dashDist.minWeight = config["Pass"]["DashDistance"]["MinWeight"][3].asFloat(); breakOffsideFactors.dashDist.maxWeight = config["Pass"]["DashDistance"]["MaxWeight"][3].asFloat(); breakOffsideFactors.breakOffside.minValue = config["Pass"]["BreakOffsideLine"]["MinValue"][3].asFloat(); breakOffsideFactors.breakOffside.maxValue = config["Pass"]["BreakOffsideLine"]["MaxValue"][3].asFloat(); breakOffsideFactors.breakOffside.minWeight = config["Pass"]["BreakOffsideLine"]["MinWeight"][3].asFloat(); breakOffsideFactors.breakOffside.maxWeight = config["Pass"]["BreakOffsideLine"]["MaxWeight"][3].asFloat(); breakOffsideFactors.passedOppNum.minValue = config["Pass"]["PassedOppNum"]["MinValue"][3].asFloat(); breakOffsideFactors.passedOppNum.maxValue = config["Pass"]["PassedOppNum"]["MaxValue"][3].asFloat(); breakOffsideFactors.passedOppNum.minWeight = config["Pass"]["PassedOppNum"]["MinWeight"][3].asFloat(); breakOffsideFactors.passedOppNum.maxWeight = config["Pass"]["PassedOppNum"]["MaxWeight"][3].asFloat(); breakOffsideFactors.statusOppNum.minValue = config["Pass"]["StatusOppNum"]["MinValue"][3].asFloat(); breakOffsideFactors.statusOppNum.maxValue = config["Pass"]["StatusOppNum"]["MaxValue"][3].asFloat(); breakOffsideFactors.statusOppNum.minWeight = config["Pass"]["StatusOppNum"]["MinWeight"][3].asFloat(); breakOffsideFactors.statusOppNum.maxWeight = config["Pass"]["StatusOppNum"]["MaxWeight"][3].asFloat(); breakOffsideFactors.securityDeltaCycle.minValue = config["Pass"]["SecurityDeltaCycle"]["MinValue"][3].asFloat(); breakOffsideFactors.securityDeltaCycle.maxValue = config["Pass"]["SecurityDeltaCycle"]["MaxValue"][3].asFloat(); breakOffsideFactors.securityDeltaCycle.minWeight = config["Pass"]["SecurityDeltaCycle"]["MinWeight"][3].asFloat(); breakOffsideFactors.securityDeltaCycle.maxWeight = config["Pass"]["SecurityDeltaCycle"]["MaxWeight"][3].asFloat(); breakOffsideFactors.statusOppDist.minValue = config["Pass"]["StatusOppDistance"]["MinValue"][3].asFloat(); breakOffsideFactors.statusOppDist.maxValue = config["Pass"]["StatusOppDistance"]["MaxValue"][3].asFloat(); breakOffsideFactors.statusOppDist.minWeight = config["Pass"]["StatusOppDistance"]["MinWeight"][3].asFloat(); breakOffsideFactors.statusOppDist.maxWeight = config["Pass"]["StatusOppDistance"]["MaxWeight"][3].asFloat(); breakOffsideFactors.statusOppDir.minValue = config["Pass"]["StatusOppDirection"]["MinValue"][3].asFloat(); breakOffsideFactors.statusOppDir.maxValue = config["Pass"]["StatusOppDirection"]["MaxValue"][3].asFloat(); breakOffsideFactors.statusOppDir.minWeight = config["Pass"]["StatusOppDirection"]["MinWeight"][3].asFloat(); breakOffsideFactors.statusOppDir.maxWeight = config["Pass"]["StatusOppDirection"]["MaxWeight"][3].asFloat(); breakOffsideFactors.statusShoot.minValue = config["Pass"]["StatusShoot"]["MinValue"][3].asFloat(); breakOffsideFactors.statusShoot.maxValue = config["Pass"]["StatusShoot"]["MaxValue"][3].asFloat(); breakOffsideFactors.statusShoot.minWeight = config["Pass"]["StatusShoot"]["MinWeight"][3].asFloat(); breakOffsideFactors.statusShoot.maxWeight = config["Pass"]["StatusShoot"]["MaxWeight"][3].asFloat(); breakOffsideFactors.dribblePath.minValue = config["Pass"]["DribblePath"]["MinValue"][3].asFloat(); breakOffsideFactors.dribblePath.maxValue = config["Pass"]["DribblePath"]["MaxValue"][3].asFloat(); breakOffsideFactors.dribblePath.minWeight = config["Pass"]["DribblePath"]["MinWeight"][3].asFloat(); breakOffsideFactors.dribblePath.maxWeight = config["Pass"]["DribblePath"]["MaxWeight"][3].asFloat(); breakOffsideFactors.defenseLine.minValue = config["Pass"]["DefenseLine"]["MinValue"][3].asFloat(); breakOffsideFactors.defenseLine.maxValue = config["Pass"]["DefenseLine"]["MaxValue"][3].asFloat(); breakOffsideFactors.defenseLine.minWeight = config["Pass"]["DefenseLine"]["MinWeight"][3].asFloat(); breakOffsideFactors.defenseLine.maxWeight = config["Pass"]["DefenseLine"]["MaxWeight"][3].asFloat(); breakOffsideFactors.extraCatch.minValue = config["Pass"]["ExtraCatch"]["MinValue"][3].asFloat(); breakOffsideFactors.extraCatch.maxValue = config["Pass"]["ExtraCatch"]["MaxValue"][3].asFloat(); breakOffsideFactors.extraCatch.minWeight = config["Pass"]["ExtraCatch"]["MinWeight"][3].asFloat(); breakOffsideFactors.extraCatch.maxWeight = config["Pass"]["ExtraCatch"]["MaxWeight"][3].asFloat();}void Pass::fillOnePassValuesByFactors(const KickInterceptCalculate &interCalc, const PassFactors **factors, float *valuesList[], unsigned num){ float offenseWeight[MAX_FACTORS_NUM]; float statusOppNumWeight[MAX_FACTORS_NUM]; float statusOppDistWeight[MAX_FACTORS_NUM]; float statusOppDirWeight[MAX_FACTORS_NUM]; float breakOffsideWeight[MAX_FACTORS_NUM]; float passedOppNumWeight[MAX_FACTORS_NUM]; float statusShootWeight[MAX_FACTORS_NUM]; float dribblePathWeight[MAX_FACTORS_NUM]; float ballDistWeight[MAX_FACTORS_NUM]; float dashDistWeight[MAX_FACTORS_NUM]; float posDevWeight[MAX_FACTORS_NUM]; float seeInfoWeight[MAX_FACTORS_NUM]; float securityDeltaCycleWeight[MAX_FACTORS_NUM]; float defenseLineWeight[MAX_FACTORS_NUM]; float extraCatchWeight[MAX_FACTORS_NUM]; float planWeight[MAX_FACTORS_NUM]; const KickInterceptPlayer &checkInterPlayer = interCalc.getFastestTmmInterPlayer(); if (logLevel >= 2) LOG << "New pass Player: " << checkInterPlayer.getPlayer().getUniNum() << " - interPoint: " << checkInterPlayer.getInterPoint() << " - ballVel: " << Point(interCalc.getFirstBall().getVel().getMagnitude(), interCalc.getFirstBall().getVel().getDirection()) << " ----------------" << endl << "command: " << interCalc.getKickCommand().toString() << endl; // calculating quantomic weight bool quantomicWeight = true; float maxBallVel = reRate(checkInterPlayer.getInterTime(), 1, 4, 1, 2.7, RRM_DIRECT); if (interCalc.getFirstBall().getVel().getMagnitude() > maxBallVel) quantomicWeight = false; else if (WorldModel::getOutDistance( checkInterPlayer.getInterPoint()) > 0) quantomicWeight = false; else if (interCalc.getFirstBall().getDistance( checkInterPlayer.getInterPoint()) < MIN_PASS_DIST) quantomicWeight = false; else if (checkInterPlayer.getPlayer().getStamina() < 2000) quantomicWeight = false; if (logLevel >= 2) LOG << "quantomicWeight: " << quantomicWeight << endl; if (!quantomicWeight) { if (logLevel >= 1) LOG << "P" << checkInterPlayer.getPlayer().getUniNum() << "\tPoint: " << checkInterPlayer.getInterPoint() << "\t\tweights:"; for (unsigned i = 0; i < num; i++) { *valuesList[i] = -0xFFFF; if (logLevel >= 1) LOG << " " << *valuesList[i]; } if (logLevel >= 1) LOG << endl; return; } // calculating offense weight float offenseValue = checkInterPlayer.getInterPoint().x - interCalc.getFirstBall().getPos().getX(); if (logLevel >= 2) LOG << "offenseValue: " << offenseValue << endl << "offenseWeight:"; for (unsigned i = 0; i < num; i++) { offenseWeight[i] = reRate(offenseValue, factors[i]->offense.minValue, factors[i]->offense.maxValue, factors[i]->offense.minWeight, factors[i]->offense.maxWeight, RRM_DIRECT); if (logLevel >= 2) LOG << " " << offenseWeight[i]; } if (logLevel >= 2) LOG << endl; // calculating statusOppNum weight float statusOppNumValue = interCalc.getOppCheckedPlayersNum(); if (logLevel >= 2) LOG << "statusOppNumValue: " << statusOppNumValue << endl << "statusOppNumWeight:"; for (unsigned i = 0; i < num; i++) { statusOppNumWeight[i] = reRate(statusOppNumValue, factors[i]->statusOppNum.minValue, factors[i]->statusOppNum.maxValue, factors[i]->statusOppNum.minWeight, factors[i]->statusOppNum.maxWeight, RRM_REVERSE); if (logLevel >= 2) LOG << " " << statusOppNumWeight[i]; } if (logLevel >= 2) LOG << endl; // calculating statusOppDist weight and statusOppDir weight float statusOppDistValue = interCalc.getNearestOppToFastestDist(); float statusOppDirValue = interCalc.getNearestOppToFastestDir(); statusOppDistValue += 2.1; if (logLevel >= 2) LOG << "statusOppDistValue: " << statusOppDistValue << endl << "statusOppDirValue: " << statusOppDirValue << endl << "statusOpp(Dist,Dir)Weight:"; for (unsigned i = 0; i < num; i++) { statusOppDistWeight[i] = reRate(statusOppDistValue, factors[i]->statusOppDist.minValue, factors[i]->statusOppDist.maxValue, factors[i]->statusOppDist.minWeight, factors[i]->statusOppDist.maxWeight, RRM_DIRECT); statusOppDirWeight[i] = reRate(statusOppDirValue, factors[i]->statusOppDir.minValue, factors[i]->statusOppDir.maxValue, factors[i]->statusOppDir.minWeight, factors[i]->statusOppDir.maxWeight, RRM_DIRECT); if (logLevel >= 2) LOG << " " << Point(statusOppDistWeight[i], statusOppDirWeight[i]); } if (logLevel >= 2) LOG << endl; // calculating breakOffside weight float breakOffsideValue = checkInterPlayer.getInterPoint().x - worldModel->getOppOffsideLine(); if (logLevel >= 2) LOG << "breakOffsideValue: " << breakOffsideValue << endl << "breakOffsideWeight:"; for (unsigned i = 0; i < num; i++) { breakOffsideWeight[i] = reRate(breakOffsideValue, factors[i]->breakOffside.minValue, factors[i]->breakOffside.maxValue, factors[i]->breakOffside.minWeight, factors[i]->breakOffside.maxWeight, RRM_DIRECT); if (logLevel >= 2) LOG << " " << breakOffsideWeight[i]; } if (logLevel >= 2) LOG << endl; // calculating passedOppNum weight float passedOppNumValue = interCalc.getPassedOppPlayers(); if (logLevel >= 2) LOG << "passedOppNumValue: " << passedOppNumValue << endl << "passedOppNumWeight:"; for (unsigned i = 0; i < num; i++) { passedOppNumWeight[i] = reRate(passedOppNumValue, factors[i]->passedOppNum.minValue, factors[i]->passedOppNum.maxValue, factors[i]->passedOppNum.minWeight, factors[i]->passedOppNum.maxWeight, RRM_DIRECT); if (logLevel >= 2) LOG << " " << passedOppNumWeight[i]; } if (logLevel >= 2) LOG << endl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -