Fixed a multiplication bug in new multiplier

This commit is contained in:
Yousef Khadadeh 2025-08-04 12:02:29 +03:00
parent c5b9187216
commit b08c73ddf1
2 changed files with 4 additions and 11 deletions

View file

@ -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))

View file

@ -2,6 +2,7 @@
#include "DrawingProgram.hpp"
#include "../World.hpp"
#include "../MainProgram.hpp"
#include "Helpers/FixedPoint.hpp"
#include <Helpers/MathExtras.hpp>
#include <Helpers/SCollision.hpp>
#include <Helpers/Parallel.hpp>
@ -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 {