69 const size_t param_index)
const {
70 auto gauss_points = common::math::GetGaussLegendrePoints<N>();
71 std::array<double, N> x = gauss_points.first;
72 std::array<double, N> w = gauss_points.second;
74 std::pair<double, double> cartesian_deviation = {0.0, 0.0};
75 for (
size_t i = 0; i < N; ++i) {
76 double r = 0.5 * x[i] + 0.5;
78 double derived_theta = DeriveTheta(param_index, r);
80 cartesian_deviation.first +=
81 w[i] * (-std::sin(curr_theta)) * derived_theta;
82 cartesian_deviation.second += w[i] * std::cos(curr_theta) * derived_theta;
85 cartesian_deviation.first *=
param_ * 0.5;
86 cartesian_deviation.second *=
param_ * 0.5;
89 for (
size_t i = 0; i < N; ++i) {
90 double r = 0.5 * x[i] + 0.5;
93 cartesian_deviation.first += 0.5 * w[i] * std::cos(theta_angle);
94 cartesian_deviation.second += 0.5 * w[i] * std::sin(theta_angle);
97 return cartesian_deviation;