X-Git-Url: https://git.sesse.net/?p=tcxmerge;a=blobdiff_plain;f=opt.cc;h=87b632e62e7ac5fd042abe9c0ff1ae9988273417;hp=bd70b4173443c9765d689e534e5fc24d5dd46f6f;hb=5e162abbf9da991f67661149b686714535e0fa1d;hpb=a282bfeb16f1554da043752a3bb90e2ec42ae27d diff --git a/opt.cc b/opt.cc index bd70b41..87b632e 100644 --- a/opt.cc +++ b/opt.cc @@ -93,8 +93,8 @@ BSPTreeNode* make_bsp_tree(const vector& remaining_roads) const LineSegment& ls = roads[remaining_roads[i]]; // find the normal - double a = -(ls.to.x - ls.from.x); - double b = ls.to.y - ls.from.y; + double a = ls.to.y - ls.from.y; + double b = -(ls.to.x - ls.from.x); double invlen = 1.0 / hypot(a, b); a *= invlen, b *= invlen; @@ -128,6 +128,13 @@ BSPTreeNode* make_bsp_tree(const vector& remaining_roads) } } + if (left.empty() || right.empty()) { + node->is_leaf = true; + node->left = node->right = NULL; + node->roads_this_node = remaining_roads; + return node; + } + if (left.size() == 0) { node->left = NULL; } else {