7 [[maybe_unused]]
Plane& plane)
const {
9 std::vector<double> deviations_xoy;
10 std::vector<double> deviations_z;
19 for (
size_t idx : indices) {
28 mean_x /=
static_cast<double>(indices.size());
29 mean_y /=
static_cast<double>(indices.size());
30 mean_z /=
static_cast<double>(indices.size());
33 for (
size_t idx : indices) {
38 double deviation_xoy = std::sqrt(std::pow(x - mean_x, 2) + std::pow(y - mean_y, 2));
39 deviations_xoy.push_back(deviation_xoy);
40 deviations_z.push_back(std::abs(z - mean_z));
44 auto calc_std_dev = [](
const std::vector<double>& deviations) {
45 double sum = std::accumulate(deviations.begin(), deviations.end(), 0.0);
46 double mean = sum /
static_cast<double>(deviations.size());
48 std::inner_product(deviations.begin(), deviations.end(), deviations.begin(), 0.0);
49 double variance = sq_sum /
static_cast<double>(deviations.size()) - mean * mean;
50 return std::sqrt(variance);
53 double std_dev_xoy = calc_std_dev(deviations_xoy);
54 double std_dev_z = calc_std_dev(deviations_z);
60 xoy = std::min({
_max_xoy_ / std_dev_xoy, 1.0});
67 z = std::min({
_max_z_ / std_dev_z, 1.0});
DeviationValidator(double min_xoy, double max_xoy, double min_z, double max_z)
Constructs a new DeviationValidator object with specified intervals on the deviation.