shithub: fnt

Download patch

ref: 64511aba1433ac89569f57542bde44e02c1a45e5
parent: d42a17033f6564e51d363982575dc9d0448400f1
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Tue Jul 16 14:35:54 EDT 2024

simpler area equation for straight lines

--- a/rast.c
+++ b/rast.c
@@ -354,9 +354,14 @@
 	s₀ = 0;
 	for(i = 0; i < ns; i++){
 #define det(a,b) (a.x*b.y - a.y*b.x)
-#define cQ(s) (det(s.p0, s.p1) + det(s.p1, s.p2) + det(s.p0, s.p2)/2.0)/3.0
-		s₀ -= cQ(seg[i]);
+#define cL(s) det(s.p0, s.p2)/2.0
+#define cQ(s) (2*det(s.p0, s.p1) + 2*det(s.p1, s.p2) + det(s.p0, s.p2))/6.0
+		if(seg[i].p1.x == seg[i].p2.x && seg[i].p1.y == seg[i].p2.y)
+			s₀ -= cL(seg[i]);
+		else
+			s₀ -= cQ(seg[i]);
 #undef det
+#undef cL
 #undef cQ
 	}
 	s₀ *= QBZR_PIX_SCALE;