MayaFlux 0.3.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ set_mode_coupling()

void MayaFlux::Nodes::Network::ModalNetwork::set_mode_coupling ( size_t  mode_a,
size_t  mode_b,
double  strength 
)

Define bidirectional coupling between two modes.

Parameters
mode_aFirst mode index
mode_bSecond mode index
strengthCoupling coefficient (0.0 = no coupling, 1.0 = strong)

Energy transfer is proportional to amplitude difference: delta_E = (A_a - A_b) * strength Conservative transfer: A_a -= delta_E/2, A_b += delta_E/2

Definition at line 255 of file ModalNetwork.cpp.

256{
257 if (mode_a >= m_modes.size() || mode_b >= m_modes.size() || mode_a == mode_b) {
258 return;
259 }
260
261 strength = std::clamp(strength, 0.0, 1.0);
262
263 remove_mode_coupling(mode_a, mode_b);
264
265 m_couplings.push_back({ mode_a, mode_b, strength });
266}
std::vector< ModeCoupling > m_couplings
void remove_mode_coupling(size_t mode_a, size_t mode_b)
Remove specific coupling.

References m_couplings, m_modes, and remove_mode_coupling().

+ Here is the call graph for this function: