| 735 | template <typename T, size_t N> |
| 736 | template <size_t P> |
| 737 | auto Vector<T, N>::psi() const -> Enable3D<P, T> { |
| 738 | Vector<T, N> vn = norm(*this); |
| 739 | T tmp = T(fabs(vn.z())); |
| 740 | if (tmp > 0.99999) { |
| 741 | return 0.0; |
| 742 | } else { |
| 743 | return T(atan2(vn.y(), vn.x())); |
| 744 | } |
| 745 | } |
| 746 | |
| 747 | template <typename T, size_t N> |
| 748 | template <size_t P> |