mirror of
https://github.com/raysan5/raylib.git
synced 2026-05-25 06:18:18 +00:00
rshapes: fix auto segment rounded-corner math and rounding (#5883)
This commit is contained in:
@@ -361,7 +361,7 @@ void DrawCircleSector(Vector2 center, float radius, float startAngle, float endA
|
||||
{
|
||||
// Calculate the maximum angle between segments based on the error rate (usually 0.5f)
|
||||
float th = acosf(2*powf(1 - SMOOTH_CIRCLE_ERROR_RATE/radius, 2) - 1);
|
||||
segments = (int)((endAngle - startAngle)*ceilf(2*PI/th)/360);
|
||||
segments = (int)ceilf((endAngle - startAngle)*(2*PI/th)/360.0f);
|
||||
|
||||
if (segments <= 0) segments = minSegments;
|
||||
}
|
||||
@@ -453,7 +453,7 @@ void DrawCircleSectorLines(Vector2 center, float radius, float startAngle, float
|
||||
{
|
||||
// Calculate the maximum angle between segments based on the error rate (usually 0.5f)
|
||||
float th = acosf(2*powf(1 - SMOOTH_CIRCLE_ERROR_RATE/radius, 2) - 1);
|
||||
segments = (int)((endAngle - startAngle)*ceilf(2*PI/th)/360);
|
||||
segments = (int)ceilf((endAngle - startAngle)*(2*PI/th)/360.0f);
|
||||
|
||||
if (segments <= 0) segments = minSegments;
|
||||
}
|
||||
@@ -579,7 +579,7 @@ void DrawRing(Vector2 center, float innerRadius, float outerRadius, float startA
|
||||
{
|
||||
// Calculate the maximum angle between segments based on the error rate (usually 0.5f)
|
||||
float th = acosf(2*powf(1 - SMOOTH_CIRCLE_ERROR_RATE/outerRadius, 2) - 1);
|
||||
segments = (int)((endAngle - startAngle)*ceilf(2*PI/th)/360);
|
||||
segments = (int)ceilf((endAngle - startAngle)*(2*PI/th)/360.0f);
|
||||
|
||||
if (segments <= 0) segments = minSegments;
|
||||
}
|
||||
@@ -670,7 +670,7 @@ void DrawRingLines(Vector2 center, float innerRadius, float outerRadius, float s
|
||||
{
|
||||
// Calculate the maximum angle between segments based on the error rate (usually 0.5f)
|
||||
float th = acosf(2*powf(1 - SMOOTH_CIRCLE_ERROR_RATE/outerRadius, 2) - 1);
|
||||
segments = (int)((endAngle - startAngle)*ceilf(2*PI/th)/360);
|
||||
segments = (int)ceilf((endAngle - startAngle)*(2*PI/th)/360.0f);
|
||||
|
||||
if (segments <= 0) segments = minSegments;
|
||||
}
|
||||
@@ -960,7 +960,7 @@ void DrawRectangleRounded(Rectangle rec, float roundness, int segments, Color co
|
||||
{
|
||||
// Calculate the maximum angle between segments based on the error rate (usually 0.5f)
|
||||
float th = acosf(2*powf(1 - SMOOTH_CIRCLE_ERROR_RATE/radius, 2) - 1);
|
||||
segments = (int)(ceilf(2*PI/th)/2.0f);
|
||||
segments = (int)ceilf((2*PI/th)/4.0f);
|
||||
if (segments <= 0) segments = 4;
|
||||
}
|
||||
|
||||
@@ -1195,7 +1195,7 @@ void DrawRectangleRoundedLinesEx(Rectangle rec, float roundness, int segments, f
|
||||
{
|
||||
// Calculate the maximum angle between segments based on the error rate (usually 0.5f)
|
||||
float th = acosf(2*powf(1 - SMOOTH_CIRCLE_ERROR_RATE/radius, 2) - 1);
|
||||
segments = (int)(ceilf(2*PI/th)/2.0f);
|
||||
segments = (int)ceilf((2*PI/th)/4.0f);
|
||||
if (segments <= 0) segments = 4;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user