diff --git a/include/Helpers/FixedPoint.hpp b/include/Helpers/FixedPoint.hpp index c69c210..c76304b 100644 --- a/include/Helpers/FixedPoint.hpp +++ b/include/Helpers/FixedPoint.hpp @@ -459,10 +459,7 @@ namespace FixedPoint { return Multiplier(val * a.val, false); } else if(isReciprocal && !a.isReciprocal) { - if(abs(val) < abs(a.val)) - return Multiplier(a.val / val, false); - else - return Multiplier(val / a.val, true); + return Multiplier(val * a.val, true); } else { if(abs(val) < abs(a.val)) diff --git a/src/DrawingProgram/DrawingProgramSelection.cpp b/src/DrawingProgram/DrawingProgramSelection.cpp index 217cec2..286c05f 100644 --- a/src/DrawingProgram/DrawingProgramSelection.cpp +++ b/src/DrawingProgram/DrawingProgramSelection.cpp @@ -2,6 +2,7 @@ #include "DrawingProgram.hpp" #include "../World.hpp" #include "../MainProgram.hpp" +#include "Helpers/FixedPoint.hpp" #include #include #include @@ -275,15 +276,10 @@ void DrawingProgramSelection::update() { WorldScalar centerToScaleCurrentNorm = centerToScaleCurrent.norm(); bool isAnyNumberZero = centerToScaleCurrentNorm == WorldScalar(0) || centerToScaleStartNorm == WorldScalar(0); if(!isAnyNumberZero) { - bool flipScale = centerToScaleStartNorm < centerToScaleCurrentNorm; - WorldScalar scaleAmount; - if(flipScale) - scaleAmount = centerToScaleCurrentNorm / centerToScaleStartNorm; - else - scaleAmount = centerToScaleStartNorm / centerToScaleCurrentNorm; + WorldMultiplier scaleAmount = WorldMultiplier(centerToScaleStartNorm) / WorldMultiplier(centerToScaleCurrentNorm); selectionTransformCoords = startingSelectionTransformCoords; - selectionTransformCoords.scale_about(scaleData.centerPos, WorldMultiplier(scaleAmount, flipScale)); + selectionTransformCoords.scale_about(scaleData.centerPos, scaleAmount); } } else {