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