Unified · Split
| @@ -58,7 +58,8 @@ struct SegQ { · 57 unmodified lines | ||
| 58 | 58 | #define QBZR_PIX_SCALE 4.0 |
| 59 | 59 | |
| 60 | 60 | #define MAXCOMPONENTS 16 |
| 61 | −#define ε 1.0e-6 | |
| 61 | +#define ε 1.0e-9 | |
| 62 | +#define ₀(v) ((v) > -ε && (v) < ε) | |
| 62 | 63 | #define min(a,b) ((a)<(b)?(a):(b)) |
| 63 | 64 | #define max(a,b) ((a)>(b)?(a):(b)) |
| 64 | 65 | |
| @@ -80,7 +81,6 @@ qslv(Sval *qs, Sval a, Sval b, Sval c) · 15 unmodified lines | ||
| 80 | 81 | Sval p, q, d; |
| 81 | 82 | int n; |
| 82 | 83 | |
| 83 | −#define ₀(x) (x > -ε && x < ε) | |
| 84 | 84 | if(₀(a)){ |
| 85 | 85 | if(₀(b)) |
| 86 | 86 | return 0; |
| @@ -96,7 +96,6 @@ qslv(Sval *qs, Sval a, Sval b, Sval c) · 9 unmodified lines | ||
| 96 | 96 | qs[0] = -p; |
| 97 | 97 | return qs[0] > 0 && qs[0] < 1; |
| 98 | 98 | } |
| 99 | −#undef ₀ | |
| 100 | 99 | |
| 101 | 100 | if(d < 0.0) |
| 102 | 101 | return 0; |
| @@ -132,10 +131,10 @@ qKL(SegQ *s₀, int jj, Sval px, Sval py, Sval *K, Sval *L) · 29 unmodified lines | ||
| 132 | 131 | } |
| 133 | 132 | |
| 134 | 133 | /* 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) | |
| 139 | 138 | return 0; |
| 140 | 139 | |
| 141 | 140 | #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 | ||
| 179 | 178 | |
| 180 | 179 | z.p0.y = e(a, y); |
| 181 | 180 | 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)) | |
| 183 | 182 | continue; |
| 184 | 183 | z.p0.x = e(a, x); |
| 185 | 184 | 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)) | |
| 187 | 186 | continue; |
| 188 | 187 | #undef e |
| 189 | 188 | |