summaryrefslogtreecommitdiffstats
path: root/src/control/Curves.cpp
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2021-08-08 23:08:42 +0200
committerNikolay Korolev <nickvnuk@gmail.com>2021-08-08 23:08:42 +0200
commitc851d9a6baa96ca404e416c4de12845839c72290 (patch)
tree3f115a97c2640f7af732002b99fa85ee17389de3 /src/control/Curves.cpp
parentdebug func (diff)
parentMerge remote-tracking branch 'upstream/miami' into miami (diff)
downloadre3-c851d9a6baa96ca404e416c4de12845839c72290.tar
re3-c851d9a6baa96ca404e416c4de12845839c72290.tar.gz
re3-c851d9a6baa96ca404e416c4de12845839c72290.tar.bz2
re3-c851d9a6baa96ca404e416c4de12845839c72290.tar.lz
re3-c851d9a6baa96ca404e416c4de12845839c72290.tar.xz
re3-c851d9a6baa96ca404e416c4de12845839c72290.tar.zst
re3-c851d9a6baa96ca404e416c4de12845839c72290.zip
Diffstat (limited to 'src/control/Curves.cpp')
-rw-r--r--src/control/Curves.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/control/Curves.cpp b/src/control/Curves.cpp
index ad7b35b5..9b075fb5 100644
--- a/src/control/Curves.cpp
+++ b/src/control/Curves.cpp
@@ -21,17 +21,27 @@ void CCurves::CalcCurvePoint(CVector* pPos1, CVector* pPos2, CVector* pDir1, CVe
float actualFactor = CalcSpeedScaleFactor(pPos1, pPos2, pDir1->x, pDir1->y, pDir2->x, pDir2->y);
CVector2D dir1 = *pDir1 * actualFactor;
CVector2D dir2 = *pDir2 * actualFactor;
- float t1 = Abs(DotProduct2D(*pPos1 - *pPos2, *pDir1));
- float t2 = Abs(DotProduct2D(*pPos2 - *pPos1, *pDir2));
+ float t1 = Abs(DotProduct2D(*pPos2 - *pPos1, *pDir1));
+ float t2 = Abs(DotProduct2D(*pPos1 - *pPos2, *pDir2));
float curveCoef;
if (t1 > t2) {
- if (between < (t1 - t2) / (t1 + t2))
+ float coef = (t1 - t2) / (t1 + t2);
+#ifdef FIX_BUGS
+ if (between <= coef)
+#else
+ if (between < coef)
+#endif
curveCoef = 0.0f;
else
- curveCoef = 0.5f - 0.5f * Cos(3.1415f * (t1 + t2) / (2 * t2) * (between - (t1 - t2) / (t1 + t2)));
+ curveCoef = 0.5f - 0.5f * Cos(3.1415f * (between - coef) * (t1 + t2) / (2 * t2));
}
else {
- if (2 * t1 / (t1 + t2) < between)
+ float coef = 2 * t1 / (t1 + t2);
+#ifdef FIX_BUGS
+ if (coef <= between)
+#else
+ if (coef < between)
+#endif
curveCoef = 1.0f;
else
curveCoef = 0.5f - 0.5f * Cos(3.1415f * between * (t1 + t2) / (2 * t1));