19namespace lagrange::polyddg {
25template <
typename Scalar>
26Eigen::Matrix<Scalar, 2, 1> nrosy_encode(
const Eigen::Matrix<Scalar, 2, 1>& v,
int n)
29 if (r < std::numeric_limits<Scalar>::epsilon())
return v;
31 Scalar c = v(0) / r, s = v(1) / r;
33 for (
int k = 0; k < n; ++k) {
34 Scalar new_re = re * c - im * s;
35 Scalar new_im = re * s + im * c;
39 return {r * re, r * im};
46template <
typename Scalar>
47Eigen::Matrix<Scalar, 2, 1> nrosy_decode(
const Eigen::Matrix<Scalar, 2, 1>& v,
int n)
50 if (r < std::numeric_limits<Scalar>::epsilon())
return v;
52 Scalar phi = std::atan2(v(1), v(0));
54 return {r * std::cos(theta), r * std::sin(theta)};
@ Scalar
Mesh attribute must have exactly 1 channel.
Definition AttributeFwd.h:56