[rshapes] Fix multisegment Bezier splines. (#3744)

* [rshapes] Fix multisegment Bezier splines.

It seems to me that these functions are wrong, if you step the index by 1 you move to a control point instead of the next segment.

* Fix example shapes/shapes_splines_drawing for bezier splines.

* Draw circles to fill gaps between bezier segments.
This commit is contained in:
Santiago Pelufo
2024-06-16 05:21:54 -03:00
committed by GitHub
parent 81ff879b04
commit 640eaca8bf
2 changed files with 27 additions and 8 deletions

View File

@@ -1832,8 +1832,11 @@ void DrawSplineCatmullRom(const Vector2 *points, int pointCount, float thick, Co
void DrawSplineBezierQuadratic(const Vector2 *points, int pointCount, float thick, Color color)
{
if (pointCount < 3) return;
for (int i = 0; i < pointCount - 2; i++)
for (int i = 2; i < pointCount - 2; i += 2)
{
DrawCircleV(points[i], thick/2.0f, color);
}
for (int i = 0; i < pointCount - 2; i += 2)
{
DrawSplineSegmentBezierQuadratic(points[i], points[i + 1], points[i + 2], thick, color);
}
@@ -1843,8 +1846,11 @@ void DrawSplineBezierQuadratic(const Vector2 *points, int pointCount, float thic
void DrawSplineBezierCubic(const Vector2 *points, int pointCount, float thick, Color color)
{
if (pointCount < 4) return;
for (int i = 0; i < pointCount - 3; i++)
for (int i = 3; i < pointCount - 3; i += 3)
{
DrawCircleV(points[i], thick/2.0f, color);
}
for (int i = 0; i < pointCount - 3; i += 3)
{
DrawSplineSegmentBezierCubic(points[i], points[i + 1], points[i + 2], points[i + 3], thick, color);
}