|
@@ -179,29 +179,33 @@ void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color)
|
|
|
previous = current;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
// Draw line using quadratic bezier curves with a control point
|
|
|
-void DrawLineBezierQuad(Vector2 startPos, Vector2 controlPos, Vector2 endPos,float thick,Color color)
|
|
|
+void DrawLineBezierQuad(Vector2 startPos, Vector2 endPos, Vector2 controlPos, float thick, Color color)
|
|
|
{
|
|
|
- Vector2 previous = startPos;
|
|
|
- Vector2 current;
|
|
|
- float t=0;
|
|
|
const float step = 1.0f/BEZIER_LINE_DIVISIONS;
|
|
|
+
|
|
|
+ Vector2 previous = startPos;
|
|
|
+ Vector2 current = { 0 };
|
|
|
+ float t = 0.0f;
|
|
|
+
|
|
|
for (int i = 0; i <= BEZIER_LINE_DIVISIONS; i++)
|
|
|
{
|
|
|
- t=step*i;
|
|
|
- float a = powf(1-t,2);
|
|
|
- float b = 2*(1-t)*t;
|
|
|
- float c = powf(t,2);
|
|
|
- //The easing functions aren't suitable here because they don't take a control point
|
|
|
- current.y=a*startPos.y+b*controlPos.y+c*endPos.y;
|
|
|
- current.x=a*startPos.x+b*controlPos.x+c*endPos.x;
|
|
|
+ t = step*i;
|
|
|
+ float a = powf(1 - t, 2);
|
|
|
+ float b = 2*(1 - t)*t;
|
|
|
+ float c = powf(t, 2);
|
|
|
|
|
|
- DrawLineEx(previous,current,thick,color);
|
|
|
+ // NOTE: The easing functions aren't suitable here because they don't take a control point
|
|
|
+ current.y = a*startPos.y + b*controlPos.y + c*endPos.y;
|
|
|
+ current.x = a*startPos.x + b*controlPos.x + c*endPos.x;
|
|
|
|
|
|
- previous=current;
|
|
|
+ DrawLineEx(previous,current,thick,color);
|
|
|
|
|
|
+ previous = current;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
// Draw lines sequence
|
|
|
void DrawLineStrip(Vector2 *points, int pointsCount, Color color)
|
|
|
{
|