1*c8dee2aaSAndroid Build Coastguard Worker // Copyright 2023 Google LLC 2*c8dee2aaSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. 3*c8dee2aaSAndroid Build Coastguard Worker 4*c8dee2aaSAndroid Build Coastguard Worker #include "modules/bentleyottmann/include/BruteForceCrossings.h" 5*c8dee2aaSAndroid Build Coastguard Worker 6*c8dee2aaSAndroid Build Coastguard Worker #include "modules/bentleyottmann/include/Segment.h" 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #include <optional> 9*c8dee2aaSAndroid Build Coastguard Worker #include <vector> 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker namespace bentleyottmann { brute_force_crossings(SkSpan<const Segment> segments)12*c8dee2aaSAndroid Build Coastguard Workerstd::optional<std::vector<Crossing>> brute_force_crossings(SkSpan<const Segment> segments) { 13*c8dee2aaSAndroid Build Coastguard Worker std::vector<Crossing> answer; 14*c8dee2aaSAndroid Build Coastguard Worker if (segments.size() >= 2) { 15*c8dee2aaSAndroid Build Coastguard Worker for (auto i0 = segments.begin(); i0 != segments.end() - 1; ++i0) { 16*c8dee2aaSAndroid Build Coastguard Worker for (auto i1 = i0 + 1; i1 != segments.end(); ++i1) { 17*c8dee2aaSAndroid Build Coastguard Worker if (auto possiblePoint = intersect(*i0, *i1)) { 18*c8dee2aaSAndroid Build Coastguard Worker answer.push_back({*i0, *i1, possiblePoint.value()}); 19*c8dee2aaSAndroid Build Coastguard Worker } 20*c8dee2aaSAndroid Build Coastguard Worker } 21*c8dee2aaSAndroid Build Coastguard Worker } 22*c8dee2aaSAndroid Build Coastguard Worker } 23*c8dee2aaSAndroid Build Coastguard Worker return answer; 24*c8dee2aaSAndroid Build Coastguard Worker } 25*c8dee2aaSAndroid Build Coastguard Worker } // namespace bentleyottmann 26