pow(log(_cV) / _cV, 1.0 / 3.0); \
})
+template <typename T> int sgn(T val) {
+ return (T(0) < val) - (val < T(0));
+}
+
RRTNode::RRTNode()
{
}
int cb_rs_steer(double q[4], void *user_data)
{
std::vector<RRTNode> *nodes = (std::vector<RRTNode> *) user_data;
+ RRTNode *ln = nullptr;
+ if (nodes->size() > 0)
+ ln = &nodes->back();
nodes->push_back(RRTNode());
nodes->back().x(q[0]);
nodes->back().y(q[1]);
nodes->back().h(q[2]);
nodes->back().sp(q[3]);
+ if (nodes->back().sp() == 0)
+ nodes->back().set_t(RRTNodeType::cusp);
+ else if (ln != nullptr && sgn(ln->sp()) != sgn(nodes->back().sp()))
+ ln->set_t(RRTNodeType::cusp);
return 0;
}