ref: c02b0a69b60c87b5d919b027e393b8a2f19a6700
parent: 2ea187e41726a61d37d225fd8057c08414f4f8f0
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Wed Jul 31 08:54:14 EDT 2024
scale after area
--- a/rast.c
+++ b/rast.c
@@ -341,12 +341,6 @@
rju² = 1.0 / ju²;
for(ju = 1; (1<<ju) < ju²; ju++);
- /* scale */
- for(i = 0; i < ns; i++){
- for(j = 0; j < nelem(seg->v); j++)
- seg[i].v[j] *= rju²;
- }
-
/* calculate area */
sl = sq = 0;
for(i = 0; i < ns; i++){
@@ -360,8 +354,15 @@
#undef det
#undef cL
#undef cQ
+ /* scale */
+ seg[i].v[0] *= rju²;
+ seg[i].v[1] *= rju²;
+ seg[i].v[2] *= rju²;
+ seg[i].v[3] *= rju²;
+ seg[i].v[4] *= rju²;
+ seg[i].v[5] *= rju²;
}
- s₀ = (sl + sq/3)*QBZR_PIX_SCALE/2;
+ s₀ = (sl + sq/3)*QBZR_PIX_SCALE/(2*ju²*ju²);
/* working space:
* quick is-segment-in-the-cell tests (two 64-bit nums per segment)
@@ -448,7 +449,8 @@
c = c₀x + 3*j²*j²;
}
v = s/QBZR_PIX_SCALE*255;
- *p++ = v < 0 ? 0 : (v > 255 ? 255 : v);
+ v *= v > 0;
+ *p++ = v < 255 ? v : 255;
}
p += pitch - dw;
}
--
⑨