35 {
36 double max_x = _xyz.rbegin()->first;
37 double min_x = _xyz.begin()->first;
39 return InterpolateYz(_xyz.rbegin()->second, xy.second);
40 }
42 return InterpolateYz(_xyz.begin()->second, xy.second);
43 }
44
45 auto itr_after = _xyz.lower_bound(xy.first);
46 auto itr_before = itr_after;
47 --itr_before;
48
49 double x_before = itr_before->first;
50 double z_before = InterpolateYz(itr_before->second, xy.second);
51 double x_after = itr_after->first;
52 double z_after = InterpolateYz(itr_after->second, xy.second);
53
54 double x_diff_before = std::fabs(xy.first - x_before);
55 double x_diff_after = std::fabs(xy.first - x_after);
56
57 return InterpolateValue(z_before, x_diff_before, z_after, x_diff_after);
58}
const double kDoubleEpsilon