blob: ddf73b4f23057a569f25c1ec6ad947e30f9b216f [file] [log] [blame]
caryclark@google.com639df892012-01-10 21:46:10 +00001#include "CubicIntersection.h"
caryclark@google.com27accef2012-01-25 18:57:23 +00002#include "Intersection_Tests.h"
caryclark@google.com639df892012-01-10 21:46:10 +00003
4const Quadratic quadratics[] = {
5 {{0, 0}, {1, 0}, {1, 1}},
6};
7
8const size_t quadratics_count = sizeof(quadratics) / sizeof(quadratics[0]);
9
10int firstQuadraticCoincidenceTest = 0;
11
12void QuadraticCoincidence_Test() {
13 // split large quadratic
14 // compare original, parts, to see if the are coincident
15 for (size_t index = firstQuadraticCoincidenceTest; index < quadratics_count; ++index) {
16 const Quadratic& test = quadratics[index];
17 QuadraticPair split;
18 chop_at(test, split, 0.5);
19 Quadratic midThird;
20 sub_divide(test, 1.0/3, 2.0/3, midThird);
caryclark@google.com27accef2012-01-25 18:57:23 +000021 const Quadratic* quads[] = {
22 &test, &midThird, &split.first(), &split.second()
23 };
24 size_t quadsCount = sizeof(quads) / sizeof(quads[0]);
25 for (size_t one = 0; one < quadsCount; ++one) {
26 for (size_t two = 0; two < quadsCount; ++two) {
27 for (size_t inner = 0; inner < 3; inner += 2) {
28 if (!point_on_parameterized_curve(*quads[one], (*quads[two])[inner])) {
29 printf("%s %zu [%zu,%zu] %zu parameterization failed\n",
30 __FUNCTION__, index, one, two, inner);
31 }
32 }
33 if (!implicit_matches(*quads[one], *quads[two])) {
34 printf("%s %zu [%zu,%zu] coincidence failed\n", __FUNCTION__,
35 index, one, two);
36 }
37 }
caryclark@google.com639df892012-01-10 21:46:10 +000038 }
39 }
40}