Make a constant half_thickness, remove some debug printfs
diff --git a/imgui_draw.cpp b/imgui_draw.cpp
index 1b042ed..3e89845 100644
--- a/imgui_draw.cpp
+++ b/imgui_draw.cpp
@@ -775,6 +775,7 @@
const int vtx_count = points_count*3;
PrimReserve(idx_count, vtx_count);
+ const float half_thickness = thickness * 0.5f;
unsigned int first_vtx_ptr = _VtxCurrentIdx;
unsigned int unused_vertices = 0;
unsigned int unused_indices = 0;
@@ -812,15 +813,13 @@
float miter_l_recip = dx1 * dy2 - dy1 * dx2;
float mlx, mly, mrx, mry; // Left and right miters
if (fabsf(miter_l_recip) > 1e-5) {
- float miter_l = (thickness * 0.5f) / miter_l_recip;
+ float miter_l = (half_thickness) / miter_l_recip;
float min_sqlen = sqlen1 > sqlen2 ? sqlen2 : sqlen1;
float miter_sqlen = ((dx1 + dx2) * (dx1 + dx2) + (dy1 + dy2) * (dy1 + dy2)) * miter_l * miter_l;
if (miter_sqlen > min_sqlen) {
- // Limit miter so it doesn't shoot away from the line in case of close to 180 degree turns
+ // Limit (inner) miter so it doesn't shoot away in the case when miter is longer than adjacent line segments
miter_l *= sqrtf(min_sqlen / miter_sqlen);
}
- if (thickness == 60)
- printf("min_sql: %f, miter_sql: %f\n", min_sqlen, miter_sqlen);
mlx = p1.x - (dx1 + dx2) * miter_l;
mly = p1.y - (dy1 + dy2) * miter_l;
@@ -828,10 +827,10 @@
mry = p1.y + (dy1 + dy2) * miter_l;
} else {
// Avoid degeneracy for (nearly) straight lines
- mlx = p1.x + dy1 * thickness * 0.5f;
- mly = p1.y - dx1 * thickness * 0.5f;
- mrx = p1.x - dy1 * thickness * 0.5f;
- mry = p1.y + dx1 * thickness * 0.5f;
+ mlx = p1.x + dy1 * half_thickness;
+ mly = p1.y - dx1 * half_thickness;
+ mrx = p1.x - dy1 * half_thickness;
+ mry = p1.y + dx1 * half_thickness;
}
// The two bevel vertices if the angle is right or obtuse
// miter_sign == 1, iff the outer (maybe bevelled) edge is on the right, -1 iff it is on the left
@@ -839,13 +838,10 @@
float b1x, b1y, b2x, b2y;
bool bevel = dx1 * dx2 + dy1 * dy2 > 1e-5;
if (bevel) {
- b1x = p1.x + (dx1 - dy1 * miter_sign) * thickness * 0.5f;
- b1y = p1.y + (dy1 + dx1 * miter_sign) * thickness * 0.5f;
- b2x = p1.x + (dx2 + dy2 * miter_sign) * thickness * 0.5f;
- b2y = p1.y + (dy2 - dx2 * miter_sign) * thickness * 0.5f;
- }
- if (thickness == 60) {
- printf("i: %d, miter: %f, sqlen1: %f, sqlen2: %f\n", i1, miter_l_recip, sqlen1, sqlen2);
+ b1x = p1.x + (dx1 - dy1 * miter_sign) * half_thickness;
+ b1y = p1.y + (dy1 + dx1 * miter_sign) * half_thickness;
+ b2x = p1.x + (dx2 + dy2 * miter_sign) * half_thickness;
+ b2y = p1.y + (dy2 - dx2 * miter_sign) * half_thickness;
}
// Set the previous line direction so it doesn't need to be recomputed