History

cut off quadratic curves better; don't call fabs

Sigrid Solveig Haflínudóttir committed 2 years ago

Commit 4dc78781 parent 64511ab1 file · +8 −9Browse files

Unified · Split

rast.c+8−9
@@ -58,7 +58,8 @@ struct SegQ { · 57 unmodified lines
5858 #define QBZR_PIX_SCALE 4.0
5959
6060 #define MAXCOMPONENTS 16
61−#define ε 1.0e-6
61+#define ε 1.0e-9
62+#define ₀(v) ((v) > -ε && (v) < ε)
6263 #define min(a,b) ((a)<(b)?(a):(b))
6364 #define max(a,b) ((a)>(b)?(a):(b))
6465
@@ -80,7 +81,6 @@ qslv(Sval *qs, Sval a, Sval b, Sval c) · 15 unmodified lines
8081 Sval p, q, d;
8182 int n;
8283
83−#define ₀(x) (x > -ε && x < ε)
8484 if(₀(a)){
8585 if(₀(b))
8686 return 0;
@@ -96,7 +96,6 @@ qslv(Sval *qs, Sval a, Sval b, Sval c) · 9 unmodified lines
9696 qs[0] = -p;
9797 return qs[0] > 0 && qs[0] < 1;
9898 }
99−#undef ₀
10099
101100 if(d < 0.0)
102101 return 0;
@@ -132,10 +131,10 @@ qKL(SegQ *s₀, int jj, Sval px, Sval py, Sval *K, Sval *L) · 29 unmodified lines
132131 }
133132
134133 /* FIXME would it make things faster to do proper convex hull test here? */
135− if(s.p0.x < 0 && s.p1.x < 0 && s.p2.x < 0 ||
136− s.p0.x > 1 && s.p1.x > 1 && s.p2.x > 1 ||
137− s.p0.y < 0 && s.p1.y < 0 && s.p2.y < 0 ||
138− s.p0.y > 1 && s.p1.y > 1 && s.p2.y > 1)
134+ if(s.p0.x <= 0 && s.p1.x <= 0 && s.p2.x <= 0 ||
135+ s.p0.x >= 1 && s.p1.x >= 1 && s.p2.x >= 1 ||
136+ s.p0.y <= 0 && s.p1.y <= 0 && s.p2.y <= 0 ||
137+ s.p0.y >= 1 && s.p1.y >= 1 && s.p2.y >= 1)
139138 return 0;
140139
141140 #define e(t,a) (s.p0.a*(1-t)*(1-t) + 2*s.p1.a*(1-t)*t + s.p2.a*t*t)
@@ -179,11 +178,11 @@ qKL(SegQ *s₀, int jj, Sval px, Sval py, Sval *K, Sval *L) · 37 unmodified lines
179178
180179 z.p0.y = e(a, y);
181180 z.p2.y = e(b, y);
182− if(fabs(z.p0.y-1) < ε && fabs(z.p2.y-1) < ε)
181+ if(₀(z.p0.y) && ₀(z.p2.y))
183182 continue;
184183 z.p0.x = e(a, x);
185184 z.p2.x = e(b, x);
186− if(fabs(z.p0.x-1) < ε && fabs(z.p2.x-1) < ε)
185+ if(₀(z.p0.x) && ₀(z.p2.x))
187186 continue;
188187 #undef e
189188

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t