浏览代码

Review DrawLineBezierQuad(), formating and aprameters order

raysan5 4 年之前
父节点
当前提交
521ed1cef0
共有 2 个文件被更改,包括 18 次插入14 次删除
  1. 1 1
      src/raylib.h
  2. 17 13
      src/shapes.c

+ 1 - 1
src/raylib.h

@@ -1090,7 +1090,7 @@ RLAPI void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Colo
 RLAPI void DrawLineV(Vector2 startPos, Vector2 endPos, Color color);                                     // Draw a line (Vector version)
 RLAPI void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color);                       // Draw a line defining thickness
 RLAPI void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color);                   // Draw a line using cubic-bezier curves in-out
-RLAPI void DrawLineBezierQuad(Vector2 startPos,Vector2 controlPos,Vector2 endPos, float thick, Color color);//Draw line using quadratic bezier curves with a control point
+RLAPI void DrawLineBezierQuad(Vector2 startPos, Vector2 endPos, Vector2 controlPos, float thick, Color color); //Draw line using quadratic bezier curves with a control point
 RLAPI void DrawLineStrip(Vector2 *points, int pointsCount, Color color);                                 // Draw lines sequence
 RLAPI void DrawCircle(int centerX, int centerY, float radius, Color color);                              // Draw a color-filled circle
 RLAPI void DrawCircleSector(Vector2 center, float radius, int startAngle, int endAngle, int segments, Color color);      // Draw a piece of a circle

+ 17 - 13
src/shapes.c

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