29 cg::Vector3D next_vector = target_location - reference_location;
32 cg::Vector3D heading_vector_flat(heading_vector.
x, heading_vector.
y, 0);
34 float dot_product = cg::Math::Dot(next_vector, heading_vector_flat);
35 dot_product = std::max(0.0f, std::min(dot_product, 1.0f));
64 uint64_t startPosn =
static_cast<uint64_t
>(std::fabs(target_point_distance * INV_MAP_RESOLUTION));
65 uint64_t index = startPosn;
68 if (startPosn < waypoint_buffer.size()) {
69 bool mScanForward =
false;
70 const float target_point_dist_power = target_point_distance * target_point_distance;
71 if (buffer_front->DistanceSquared(target_waypoint) < target_point_dist_power) {
77 for (uint64_t i = startPosn;
78 (i < waypoint_buffer.size()) && (buffer_front->DistanceSquared(target_waypoint) < target_point_dist_power);
80 target_waypoint = waypoint_buffer.at(i);
84 for (uint64_t i = startPosn;
85 (buffer_front->DistanceSquared(target_waypoint) > target_point_dist_power);
87 target_waypoint = waypoint_buffer.at(i);
92 target_waypoint = waypoint_buffer.back();
93 index = waypoint_buffer.size() - 1;
95 return std::make_pair(target_waypoint, index);