MayaFlux 1.0.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 294 of file ModalNetwork.cpp.

295{
296 if (mode_a >= m_modes.size() || mode_b >= m_modes.size() || mode_a == mode_b) {
297 return;
298 }
299
300 strength = std::clamp(strength, 0.0, 1.0);
301
302 remove_mode_coupling(mode_a, mode_b);
303
304 m_couplings.push_back({ .mode_a = mode_a,
305 .mode_b = mode_b,
306 .strength = strength });
307}
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: