\doxysection{src/lib/serif/geometry/deformation/harmonics.cpp File Reference} \hypertarget{harmonics_8cpp}{}\label{harmonics_8cpp}\index{src/lib/serif/geometry/deformation/harmonics.cpp@{src/lib/serif/geometry/deformation/harmonics.cpp}} {\ttfamily \#include "{}serif/geometry/deformation/detail/harmonics.\+hpp"{}}\newline {\ttfamily \#include $<$algorithm$>$}\newline {\ttfamily \#include $<$cmath$>$}\newline {\ttfamily \#include $<$cstdint$>$}\newline {\ttfamily \#include $<$limits$>$}\newline {\ttfamily \#include $<$numbers$>$}\newline Include dependency graph for harmonics.\+cpp\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{harmonics_8cpp__incl} \end{center} \end{figure} \doxysubsubsection*{Namespaces} \begin{DoxyCompactItemize} \item namespace \mbox{\hyperlink{namespaceserif}{serif}} \item namespace \mbox{\hyperlink{namespaceserif_1_1geometry}{serif\+::geometry}} \item namespace \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation}{serif\+::geometry\+::deformation}} \item namespace \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_1_1detail}{serif\+::geometry\+::deformation\+::detail}} \end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item std\+::expected$<$ std\+::vector$<$ \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_spherical_harmonic_mode}{Spherical\+Harmonic\+Mode}} $>$, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_1_1detail_a2b90b4a4ff8a4b85379079d55b2eb3b1}{serif\+::geometry\+::deformation\+::detail\+::make\+\_\+harmonic\+\_\+modes}} (const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_spherical_harmonic_surface}{Spherical\+Harmonic\+Surface}} \&model, std\+::size\+\_\+t node\+\_\+count) \begin{DoxyCompactList}\small\item\em Validate harmonic cutoffs before allocating a basis or enumerating modes. \end{DoxyCompactList}\item std\+::expected$<$ std\+::vector$<$ double $>$, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_1_1detail_a02c8c6fceb651f31e86585b8a794562a}{serif\+::geometry\+::deformation\+::detail\+::sample\+\_\+harmonic\+\_\+basis}} (const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_spherical_harmonic_surface}{Spherical\+Harmonic\+Surface}} \&model, std\+::span$<$ const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_spherical_harmonic_mode}{Spherical\+Harmonic\+Mode}} $>$ modes, std\+::span$<$ const std\+::array$<$ double, 3 $>$ $>$ directions) \begin{DoxyCompactList}\small\item\em Use normalized Legendre recurrence to avoid factorial growth while preserving the Condon–\+Shortley phase. \end{DoxyCompactList}\item \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_1_1detail_a7628b540a8b43925a269627be0e1f8a7}{serif\+::geometry\+::deformation\+::detail\+::check\+\_\+independent\+\_\+harmonics}} (std\+::span$<$ const double $>$ basis, std\+::size\+\_\+t node\+\_\+count, std\+::size\+\_\+t mode\+\_\+count) \begin{DoxyCompactList}\small\item\em Check sampled rank on a private copy, leaving physical coefficients and basis normalization unchanged. \end{DoxyCompactList}\end{DoxyCompactItemize}