237 {
239
240
241
242 qreal *
distance =
new qreal[deg + 1];
243
244
248
249 qreal abSquared = (a * a) + (b * b);
250
251 for (int i = 1; i < deg; i++) {
252
256 }
259 }
260 }
261
262
263
264 qreal max_distance_above = 0.0;
265 qreal max_distance_below = 0.0;
266 for (int i = 1; i < deg; i++) {
268 max_distance_below = qMin(max_distance_below,
distance[i]);
269 }
271 max_distance_above = qMax(max_distance_above,
distance[i]);
272 }
273 }
275
276
277 qreal a1 = 0.0;
278 qreal b1 = 1.0;
279 qreal c1 = 0.0;
280
281
282 qreal a2 = a;
284 qreal c2 = c + max_distance_above;
285
286 qreal det = a1 * b2 - a2 * b1;
287 qreal dInv = 1.0/det;
288
289 qreal intercept_1 = (b1 * c2 - b2 * c1) * dInv;
290
291
292 a2 = a;
294 c2 = c + max_distance_below;
295
296 det = a1 * b2 - a2 * b1;
297 dInv = 1.0/det;
298
299 qreal intercept_2 = (b1 * c2 - b2 * c1) * dInv;
300
301
302 qreal left_intercept = qMin(intercept_1, intercept_2);
303 qreal right_intercept = qMax(intercept_1, intercept_2);
304
305 qreal error = 0.5 * (right_intercept-left_intercept);
306
307 return (error < tolerance);
308 }
qreal distance(const QPointF &p1, const QPointF &p2)