X-Git-Url: http://rtime.felk.cvut.cz/gitweb/hubacji1/rrts.git/blobdiff_plain/c8fff97c303bf1048f8a8a0a69375ad7d9db027e..90d163f545ab59eb9a286093e4bc6993edfe93c1:/src/rrtext7.cc diff --git a/src/rrtext7.cc b/src/rrtext7.cc index ab52db7..a6282db 100644 --- a/src/rrtext7.cc +++ b/src/rrtext7.cc @@ -1,62 +1,62 @@ #include "rrtext.h" RRTExt7::KdNode::KdNode(RRTNode *n) - : node_(n) - , left_(nullptr) - , right_(nullptr) + : node_(n) + , left_(nullptr) + , right_(nullptr) { } void RRTExt7::delete_kd_nodes(KdNode *n) { - if (!n) - return; - if (n->left() != nullptr) - delete_kd_nodes(n->left()); - if (n->right() != nullptr) - delete_kd_nodes(n->right()); - delete n; + if (!n) + return; + if (n->left() != nullptr) + delete_kd_nodes(n->left()); + if (n->right() != nullptr) + delete_kd_nodes(n->right()); + delete n; } void RRTExt7::store_node(RRTNode *n, KdNode *&r, int l) { - if (r == nullptr) - r = new KdNode(n); - else if (l % 2 == 0 && n->x() < r->node()->x()) - store_node(n, r->left(), l + 1); - else if (l % 2 == 0) - store_node(n, r->right(), l + 1); - else if (l % 2 == 1 && n->y() < r->node()->y()) - store_node(n, r->left(), l + 1); - else - store_node(n, r->right(), l + 1); + if (r == nullptr) + r = new KdNode(n); + else if (l % 2 == 0 && n->x() < r->node()->x()) + store_node(n, r->left(), l + 1); + else if (l % 2 == 0) + store_node(n, r->right(), l + 1); + else if (l % 2 == 1 && n->y() < r->node()->y()) + store_node(n, r->left(), l + 1); + else + store_node(n, r->right(), l + 1); } void RRTExt7::nn(RRTNode *&n, RRTNode &t, KdNode *r, int l, double &d) { - if (r == nullptr) - return; - if (this->cost_search(*r->node(), t) < d) { - n = r->node(); - d = this->cost_search(*r->node(), t); - } - if (l % 2 == 0 && t.x() < r->node()->x()) { - nn(n, t, r->left(), l + 1, d); - if (r->node()->x() - t.x() < d) - nn(n, t, r->right(), l + 1, d); - } else if (l % 2 == 0) { - nn(n, t, r->right(), l + 1, d); - if (t.x() - r->node()->x() < d) - nn(n, t, r->left(), l + 1, d); - } else if (l % 2 == 1 && t.y() < r->node()->y()) { - nn(n, t, r->left(), l + 1, d); - if (r->node()->y() - t.y() < d) - nn(n, t, r->right(), l + 1, d); - } else { - nn(n, t, r->right(), l + 1, d); - if (t.y() - r->node()->y() < d) - nn(n, t, r->left(), l + 1, d); - } + if (r == nullptr) + return; + if (this->cost_search(*r->node(), t) < d) { + n = r->node(); + d = this->cost_search(*r->node(), t); + } + if (l % 2 == 0 && t.x() < r->node()->x()) { + nn(n, t, r->left(), l + 1, d); + if (r->node()->x() - t.x() < d) + nn(n, t, r->right(), l + 1, d); + } else if (l % 2 == 0) { + nn(n, t, r->right(), l + 1, d); + if (t.x() - r->node()->x() < d) + nn(n, t, r->left(), l + 1, d); + } else if (l % 2 == 1 && t.y() < r->node()->y()) { + nn(n, t, r->left(), l + 1, d); + if (r->node()->y() - t.y() < d) + nn(n, t, r->right(), l + 1, d); + } else { + nn(n, t, r->right(), l + 1, d); + if (t.y() - r->node()->y() < d) + nn(n, t, r->left(), l + 1, d); + } } // API @@ -66,26 +66,26 @@ void RRTExt7::init() void RRTExt7::deinit() { - this->delete_kd_nodes(this->kdroot_); + this->delete_kd_nodes(this->kdroot_); } void RRTExt7::store_node(RRTNode n) { - RRTS::store_node(n); - RRTNode *sn = &this->nodes().back(); - this->store_node(sn, this->kdroot_, 0); + RRTS::store_node(n); + RRTNode *sn = &this->nodes().back(); + this->store_node(sn, this->kdroot_, 0); } RRTNode *RRTExt7::nn(RRTNode &t) { - RRTNode *n = &this->nodes().front(); - double d = 9999; - this->nn(n, t, this->kdroot_, 0, d); - return n; + RRTNode *n = &this->nodes().front(); + double d = 9999; + this->nn(n, t, this->kdroot_, 0, d); + return n; } std::vector RRTExt7::nv(RRTNode &t) { - std::vector nv; - return nv; + std::vector nv; + return nv; }