1/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "QuadraticIntersection_TestData.h"
9
10const Quadratic quadraticLines[] = {
11    {{0, 0}, {0, 0}, {1, 0}},
12    {{0, 0}, {1, 0}, {0, 0}},
13    {{1, 0}, {0, 0}, {0, 0}},
14    {{1, 0}, {2, 0}, {3, 0}},
15    {{0, 0}, {0, 0}, {0, 1}},
16    {{0, 0}, {0, 1}, {0, 0}},
17    {{0, 1}, {0, 0}, {0, 0}},
18    {{0, 1}, {0, 2}, {0, 3}},
19    {{0, 0}, {0, 0}, {1, 1}},
20    {{0, 0}, {1, 1}, {0, 0}},
21    {{1, 1}, {0, 0}, {0, 0}},
22    {{1, 1}, {2, 2}, {3, 3}},
23    {{1, 1}, {3, 3}, {3, 3}},
24    {{1, 1}, {1, 1}, {2, 2}},
25    {{1, 1}, {2, 2}, {1, 1}},
26    {{1, 1}, {1, 1}, {3, 3}},
27    {{1, 1}, {2, 2}, {4, 4}}, // no coincident
28    {{1, 1}, {3, 3}, {4, 4}},
29    {{1, 1}, {3, 3}, {2, 2}},
30    {{1, 1}, {4, 4}, {2, 2}},
31    {{1, 1}, {4, 4}, {3, 3}},
32    {{2, 2}, {1, 1}, {3, 3}},
33    {{2, 2}, {1, 1}, {4, 4}},
34    {{2, 2}, {3, 3}, {1, 1}},
35    {{2, 2}, {3, 3}, {4, 4}},
36    {{2, 2}, {4, 4}, {1, 1}},
37    {{2, 2}, {4, 4}, {3, 3}},
38};
39
40const size_t quadraticLines_count = sizeof(quadraticLines) / sizeof(quadraticLines[0]);
41
42static const double F = PointEpsilon * 3;
43static const double H = PointEpsilon * 4;
44static const double J = PointEpsilon * 5;
45static const double K = PointEpsilon * 8; // INVESTIGATE: why are larger multiples necessary?
46
47const Quadratic quadraticModEpsilonLines[] = {
48    {{0, F}, {0, 0}, {1, 0}},
49    {{0, 0}, {1, 0}, {0, F}},
50    {{1, 0}, {0, F}, {0, 0}},
51    {{1, H}, {2, 0}, {3, 0}},
52    {{F, 0}, {0, 0}, {0, 1}},
53    {{0, 0}, {0, 1}, {F, 0}},
54    {{0, 1}, {F, 0}, {0, 0}},
55    {{H, 1}, {0, 2}, {0, 3}},
56    {{0, F}, {0, 0}, {1, 1}},
57    {{0, 0}, {1, 1}, {F, 0}},
58    {{1, 1}, {F, 0}, {0, 0}},
59    {{1, 1+J}, {2, 2}, {3, 3}},
60    {{1, 1}, {3, 3}, {3+F, 3}},
61    {{1, 1}, {1+F, 1}, {2, 2}},
62    {{1, 1}, {2, 2}, {1, 1+F}},
63    {{1, 1}, {1, 1+F}, {3, 3}},
64    {{1+H, 1}, {2, 2}, {4, 4}}, // no coincident
65    {{1, 1+K}, {3, 3}, {4, 4}},
66    {{1, 1}, {3+F, 3}, {2, 2}},
67    {{1, 1}, {4, 4+F}, {2, 2}},
68    {{1, 1}, {4, 4}, {3+F, 3}},
69    {{2, 2}, {1, 1}, {3, 3+F}},
70    {{2+F, 2}, {1, 1}, {4, 4}},
71    {{2, 2+F}, {3, 3}, {1, 1}},
72    {{2, 2}, {3+F, 3}, {4, 4}},
73    {{2, 2}, {4, 4+F}, {1, 1}},
74    {{2, 2}, {4, 4}, {3+F, 3}},
75};
76
77const size_t quadraticModEpsilonLines_count = sizeof(quadraticModEpsilonLines) / sizeof(quadraticModEpsilonLines[0]);
78
79const Quadratic quadraticTests[][2] = {
80    { // one intersection
81     {{0, 0},
82      {0, 1},
83      {1, 1}},
84     {{0, 1},
85      {0, 0},
86      {1, 0}}
87    },
88    { // four intersections
89     {{1, 0},
90      {2, 6},
91      {3, 0}},
92     {{0, 1},
93      {6, 2},
94      {0, 3}}
95    }
96};
97
98const size_t quadraticTests_count = sizeof(quadraticTests) / sizeof(quadraticTests[0]);
99