From c1ab6b1d9b596fd188730c1397f67da336e9eac7 Mon Sep 17 00:00:00 2001 From: James Alliban Date: Thu, 23 Jan 2014 02:23:56 +0000 Subject: [PATCH] Decimal places are shortened to 4 in tripod Also fixed a bug that showed wrong average on bottom right hud copy --- of/Active Tripod/bin/Active_Tripod.lib | Bin 78700 -> 78700 bytes of/Active Tripod/src/visual/Scene.cpp | 83 ++++++++++++++++++------- of/Active Tripod/src/visual/Scene.h | 1 + 3 files changed, 61 insertions(+), 23 deletions(-) diff --git a/of/Active Tripod/bin/Active_Tripod.lib b/of/Active Tripod/bin/Active_Tripod.lib index 2816fe6fd30a1f2be3e7d60573c2e440ab703338..9e726c35a5e5254449877261c050a7b1267d6fdf 100644 GIT binary patch delta 7034 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 diff --git a/of/Active Tripod/src/visual/Scene.cpp b/of/Active Tripod/src/visual/Scene.cpp index 7d860a5..7e30311 100644 --- a/of/Active Tripod/src/visual/Scene.cpp +++ b/of/Active Tripod/src/visual/Scene.cpp @@ -76,17 +76,20 @@ void Scene::drawGraphValues() ofPoint val0 = activeGraph->currentPub0Point; ofPoint val1 = activeGraph->currentPub1Point; + + string stringVal0 = reduceDecimalCount(activeGraph->publisher0Data.back().stringValue, 4); + string stringVal1 = reduceDecimalCount(activeGraph->publisher1Data.back().stringValue, 4); ofPushStyle(); text.setAlignment(FTGL_ALIGN_LEFT); ofSetColor(graphTextColour[0], graphTextColour[1], graphTextColour[2], graphTextColour[3]); text.setSize(graphTextSize); text.drawString( - activeGraph->publisher0Data.back().stringValue + " " + activeGraph->publisher0Data.back().unitMeasure, + stringVal0 + " " + activeGraph->publisher0Data.back().unitMeasure, val0.x + 10, val0.y); text.drawString( - activeGraph->publisher1Data.back().stringValue + " " + activeGraph->publisher1Data.back().unitMeasure, + stringVal1 + " " + activeGraph->publisher1Data.back().unitMeasure, val1.x + 10, val1.y); ofPopStyle(); @@ -157,6 +160,10 @@ void Scene::drawHUDCopy() vector *p1Data = &activeGraph->publisher1Data; + if (activeGraph->publisher0Data.size() == 0) return; + + string stringVal0 = reduceDecimalCount(activeGraph->publisher0Data.back().stringValue, 4); + string stringVal1 = reduceDecimalCount(activeGraph->publisher1Data.back().stringValue, 4); int amountToAverage = MIN(p0Data->size(), averageAmount); @@ -165,59 +172,67 @@ void Scene::drawHUDCopy() if (p0Data->back().longlongIntValue > 0) { long long int average0 = 0; - for (int i = 0; i < (int)amountToAverage; i++) + for (int i = 0; i < amountToAverage; i++) average0 += p0Data->at(p0Data->size() - i - 1).value; - average0 /= (int)amountToAverage; - + average0 /= amountToAverage; + + printf("l average0:%llu\n", average0); string valueWithCommas = addCommasToNumberString(ofToString(average0)); + printf("l av valueWithCommas:%s\n", valueWithCommas.c_str()); blStr = "Increase: " + ofToString(p0Data->back().value - p0Data->at(p0Data->size() - 2).value) + "\n" + - "Current Value: " + p0Data->back().stringValue + "\n" + - "Running average: " + valueWithCommas; + "Current Value: " + stringVal0 + "\n" + + "Running average: " + reduceDecimalCount(valueWithCommas, 4); drawTextBox(blStr, "BOTTOM LEFT"); } else { float average0 = 0; - for (int i = 0; i < (int)amountToAverage; i++) + for (int i = 0; i < amountToAverage; i++) average0 += p0Data->at(p0Data->size() - i - 1).value; - average0 /= (int)amountToAverage; + average0 /= amountToAverage; + printf("f average0:%f\n", average0); string valueWithCommas = (average0 > 999) ? addCommasToNumberString(ofToString(average0)) : ofToString(average0); + printf("f av valueWithCommas:%s\n", valueWithCommas.c_str()); blStr = "Increase: " + ofToString(p0Data->back().value - p0Data->at(p0Data->size() - 2).value) + "\n" + - "Current Value: " + p0Data->back().stringValue + "\n" + - "Running average: " + valueWithCommas; + "Current Value: " + stringVal0 + "\n" + + "Running average: " + reduceDecimalCount(valueWithCommas, 4); drawTextBox(blStr, "BOTTOM LEFT"); } if (p1Data->back().longlongIntValue > 0) { - float average1 = 0; - for (int i = 0; i < (int)amountToAverage; i++) + long long int average1 = 0; + for (int i = 0; i < amountToAverage; i++) average1 += p1Data->at(p1Data->size() - i - 1).value; - average1 /= (int)amountToAverage; + average1 /= amountToAverage; + printf("l average0:%llu\n", average1); string valueWithCommas = addCommasToNumberString(ofToString(average1)); + printf("l av valueWithCommas:%s\n", valueWithCommas.c_str()); brStr = "Increase: " + ofToString(p1Data->back().value - p1Data->at(p1Data->size() - 2).value) + "\n" + - "Current Value: " + p1Data->back().stringValue + "\n" + - "Running average: " + valueWithCommas; + "Current Value: " + stringVal1 + "\n" + + "Running average: " + reduceDecimalCount(valueWithCommas, 4); drawTextBox(brStr, "BOTTOM RIGHT"); } else { - long long int average1 = 0; - for (int i = 0; i < (int)amountToAverage; i++) + float average1 = 0; + for (int i = 0; i < amountToAverage; i++) average1 += p1Data->at(p1Data->size() - i - 1).value; - average1 /= (int)amountToAverage; + average1 /= amountToAverage; + printf("f average1:%f\n", average1); string valueWithCommas = (average1 > 999) ? addCommasToNumberString(ofToString(average1)) : ofToString(average1); + printf("f av valueWithCommas:%s\n", valueWithCommas.c_str()); brStr = "Increase: " + ofToString(p1Data->back().value - p1Data->at(p1Data->size() - 2).value) + "\n" + - "Current Value: " + p1Data->back().stringValue + "\n" + - "Running average: " + valueWithCommas; + "Current Value: " + stringVal1 + "\n" + + "Running average: " + reduceDecimalCount(valueWithCommas, 4); drawTextBox(brStr, "BOTTOM RIGHT"); } } @@ -287,8 +302,8 @@ void Scene::addNewData(vector newData) bodyGraph.addNewData(newData); separateBodyGraph.addNewData(newData); - tlStr = newData[0].info + newData[0].unitMeasure + "\n" + ofToString(newData[0].stringValue); - trStr = newData[1].info + newData[1].unitMeasure + "\n" + ofToString(newData[1].stringValue); + tlStr = newData[0].info + newData[0].unitMeasure + "\n" + reduceDecimalCount(ofToString(newData[0].stringValue), 4); + trStr = newData[1].info + newData[1].unitMeasure + "\n" + reduceDecimalCount(ofToString(newData[1].stringValue), 4); } @@ -342,4 +357,26 @@ string Scene::addCommasToNumberString(string num) temp = integral.substr(0, 3+i) + temp; } return temp + fractional; +} + + +string Scene::reduceDecimalCount(string num, int maxDecimal) +{ + string temp; + string integral = num; + string fractional; + int decimalLocation = integral.find('.'); + + if (decimalLocation != -1) + { + integral = integral.substr(0, decimalLocation); + fractional = num.substr(decimalLocation + 1); + if (fractional.size() > maxDecimal) fractional = fractional.substr(0, maxDecimal); + + return integral + "." + fractional; + } + else + { + return num; + } } \ No newline at end of file diff --git a/of/Active Tripod/src/visual/Scene.h b/of/Active Tripod/src/visual/Scene.h index 35f83a2..a6eb37e 100644 --- a/of/Active Tripod/src/visual/Scene.h +++ b/of/Active Tripod/src/visual/Scene.h @@ -28,6 +28,7 @@ public: void clearGraphData(); void keyPressed(int key); string addCommasToNumberString(string num); + string reduceDecimalCount(string num, int maxDecimal); BarGraph barGraph; BodyGraph bodyGraph;