17 #include <deal.II/base/exceptions.h>
18 #include <deal.II/base/geometric_utilities.h>
21 DEAL_II_NAMESPACE_OPEN
30 <<
"The radius <" << arg1 <<
"> can not be negative.");
34 <<
"The azimuth angle <" << arg1 <<
"> is not in [0,2Pi).");
38 <<
"The polar angle <" << arg1 <<
"> is not in [0,Pi].");
42 std::array<double, dim>
45 std::array<double, dim> scoord;
48 scoord[0] = position.
norm();
50 scoord[1] = std::atan2(position(1), position(0));
59 if (scoord[0] > std::numeric_limits<double>::min())
60 scoord[2] = std::acos(position(2) / scoord[0]);
67 template <std::
size_t dim>
82 ccoord[0] = scoord[0] * std::cos(scoord[1]);
83 ccoord[1] = scoord[0] * std::sin(scoord[1]);
91 ccoord[0] = scoord[0] * std::sin(scoord[2]) * std::cos(scoord[1]);
92 ccoord[1] = scoord[0] * std::sin(scoord[2]) * std::sin(scoord[1]);
93 ccoord[2] = scoord[0] * std::cos(scoord[2]);
105 #include "geometric_utilities.inst"
110 DEAL_II_NAMESPACE_CLOSE