今までのジョイスティックの入力を段階分けしていた方式から、アナログ値をできる限りそのまま使用する方式に変更しました。
Fork of ControlMain2017 by
Diff: ValueProcessor.cpp
- Branch:
- ?????
- Revision:
- 46:53eb2ba661c5
- Parent:
- 45:df3b45a8cecc
- Child:
- 47:6f84dcf7d1d8
--- a/ValueProcessor.cpp Sat Apr 29 04:13:17 2017 +0000 +++ b/ValueProcessor.cpp Sat May 13 07:31:38 2017 +0000 @@ -19,15 +19,14 @@ int ValueProcess::WidenNeutral(int phased) { int AddNeutral = ADDITIONALPHASE / 2; - int neutralPhase = (PHASE_NUM + ADDITIONALPHASE +1)/2.0; - if(neutralPhase - AddNeutral<=phased && phased <= neutralPhase +AddNeutral) - phased = neutralPhase; - else if(phased < neutralPhase - AddNeutral) - phased += AddNeutral; - else if(neutralPhase +AddNeutral<phased) - phased -= AddNeutral; + int neutralPhase = (int)((PHASE_NUM + ADDITIONALPHASE+1) / 2.0); + int Np = (int)((PHASE_NUM + ADDITIONALPHASE ) / 2.0); + if (neutralPhase - AddNeutral <= phased && phased <= neutralPhase + AddNeutral) + phased = neutralPhase - AddNeutral; + else if (neutralPhase + AddNeutral < phased) + phased -= ADDITIONALPHASE; - return phased - AddNeutral; + return phased; } void ValueProcess::setMaxAndMin(InputType it,float value) @@ -118,7 +117,7 @@ float PhaseWidth = (max - min) / tempPhase; if(value< max&& value > min) { for(int i = 1; i <= tempPhase; i++) { - if(value < min + PhaseWidth * i&& value > min + PhaseWidth * (i - 1) ) + if(value <= min + PhaseWidth * i&& value > min + PhaseWidth * (i - 1) ) return i; } } else if(value <= min) @@ -170,7 +169,7 @@ *input_R = phased_R; float Formated_L = Format2Range(SetRollPitchRacio(MatchedPitch, - MatchedRoll),SetRollPitchRacio(pitchNeutral + pitchUpperDiff,-rollNeutral - rollLowerDiff),SetRollPitchRacio(pitchNeutral +pitchLowerDiff, - rollNeutral - rollUpperDiff)); int phased_L = PhaseFloat(Formated_L,SetRollPitchRacio(pitchNeutral + pitchUpperDiff ,- rollNeutral - rollLowerDiff),SetRollPitchRacio(pitchNeutral + pitchLowerDiff ,- rollNeutral - rollUpperDiff)); - *input_L = WidenNeutral(phased_L); + *input_L = WidenNeutral(phased_R); if(*input_R < 1) *input_R = 1;