83 std::vector<std::pair<Real, unsigned int>> meshcontrol_drum_dist_vec;
90 meshcontrol_drum_dist_vec.push_back(std::make_pair(cd_dist, i));
92 std::sort(meshcontrol_drum_dist_vec.begin(), meshcontrol_drum_dist_vec.end());
96 : meshcontrol_drum_dist_vec.front().second;
100 Real dynamic_end_angle = dynamic_start_angle +
_angle_ranges[cd_id] / 180.0 * M_PI;
102 dynamic_start_angle = atan2(std::sin(dynamic_start_angle),
103 std::cos(dynamic_start_angle)) /
105 dynamic_end_angle = atan2(std::sin(dynamic_end_angle),
106 std::cos(dynamic_end_angle)) /
112 dynamic_start_angle);
123 Real start_low, start_high, end_low, end_high;
130 start_low = *(start_bound - 1);
131 start_high = *start_bound;
148 end_low = *(end_bound - 1);
149 end_high = *end_bound;
161 Real azimuthal_p = atan2(
p(1) - cd_pos(1),
p(0) - cd_pos(0)) / M_PI * 180;
170 if (end_high >= start_low)
173 if (azimuthal_p >= start_high && azimuthal_p <= end_low)
176 else if (azimuthal_p <= start_low || azimuthal_p >= end_high)
180 else if (azimuthal_p < start_high && azimuthal_p > start_low)
182 Real start_interval = start_high - start_low;
183 Real stab_interval = start_high - dynamic_start_angle;
184 return stab_interval / start_interval * 100.0;
190 Real end_interval = end_high - end_low;
191 Real endab_interval = dynamic_end_angle - end_low;
192 return endab_interval / end_interval * 100.0;
197 else if (end_low >= end_high)
200 if (azimuthal_p >= start_high && azimuthal_p <= end_low)
203 else if (azimuthal_p <= start_low && azimuthal_p >= end_high)
207 else if (azimuthal_p < start_high && azimuthal_p > start_low)
209 Real start_interval = start_high - start_low;
210 Real stab_interval = start_high - dynamic_start_angle;
211 return stab_interval / start_interval * 100.0;
218 Real end_interval = end_high - end_low + 360.0;
219 Real endab_interval = (dynamic_end_angle - end_low >= 0.0)
220 ? (dynamic_end_angle - end_low)
221 : (dynamic_end_angle - end_low + 360.0);
222 return endab_interval / end_interval * 100.0;
226 else if (start_high >= end_low)
229 if (azimuthal_p >= start_high || azimuthal_p <= end_low)
232 else if (azimuthal_p >= end_high && azimuthal_p <= start_low)
236 else if (azimuthal_p < start_high && azimuthal_p > start_low)
238 Real start_interval = start_high - start_low;
239 Real stab_interval = start_high - dynamic_start_angle;
240 return stab_interval / start_interval * 100.0;
246 Real end_interval = end_high - end_low;
247 Real endab_interval = dynamic_end_angle - end_low;
248 return endab_interval / end_interval * 100.0;
256 if (azimuthal_p >= start_high && azimuthal_p <= end_low)
259 else if (azimuthal_p >= end_high && azimuthal_p <= start_low)
264 else if (azimuthal_p > start_low || azimuthal_p < start_high)
266 Real start_interval = start_high - start_low + 360.0;
267 Real stab_interval = (start_high - dynamic_start_angle >= 0.0)
268 ? (start_high - dynamic_start_angle)
269 : (start_high - dynamic_start_angle + 360.0);
270 return stab_interval / start_interval * 100.0;
276 Real end_interval = end_high - end_low;
277 Real endab_interval = dynamic_end_angle - end_low;
278 return endab_interval / end_interval * 100.0;