rshapes: fix auto segment rounded-corner math and rounding
This commit is contained in:
parent
0d78f10161
commit
0503fdf892
|
|
@ -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)
|
// 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);
|
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;
|
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)
|
// 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);
|
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;
|
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)
|
// 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);
|
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;
|
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)
|
// 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);
|
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;
|
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)
|
// 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);
|
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;
|
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)
|
// 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);
|
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;
|
if (segments <= 0) segments = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user