
Created 2025-09-27
/**
 * ============================================================================
 * =                         Sin Wave Radios                                  =
 * ============================================================================
 *
 * This example explores using inputs to create some visual patterns in Recho.
 * For now, we can only manually set the values of the inputs to simulate the 
 * sine wave, based on the computed values. In the future, inputs values can be
 * programmatically updated.
 * 
 * Inspired by Jack B. Du's post on Instagram: 
 * 
 * https://www.instagram.com/p/DOy2rFdDNjF/?utm_source=ig_web_copy_link&igsh=MzRlODBiNWFlZA==
 */
recho.radio(4, ['','','','','','','','','']);
recho.radio(5, ['','','','','','','','','']);
recho.radio(6, ['','','','','','','','','']);
recho.radio(7, ['','','','','','','','','']);
recho.radio(8, ['','','','','','','','','']);
recho.radio(8, ['','','','','','','','','']);
recho.radio(8, ['','','','','','','','','']);
recho.radio(7, ['','','','','','','','','']);
recho.radio(6, ['','','','','','','','','']);
recho.radio(5, ['','','','','','','','','']);
recho.radio(4, ['','','','','','','','','']);
recho.radio(3, ['','','','','','','','','']);
recho.radio(2, ['','','','','','','','','']);
recho.radio(1, ['','','','','','','','','']);
recho.radio(0, ['','','','','','','','','']);
recho.radio(0, ['','','','','','','','','']);
recho.radio(0, ['','','','','','','','','']);
recho.radio(1, ['','','','','','','','','']);
recho.radio(2, ['','','','','','','','','']);
recho.radio(3, ['','','','','','','','','']);
recho.radio(4, ['','','','','','','','','']);
//➜ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ]
//➜ [ 0, 0.3141592653589793, 0.6283185307179586, 0.9424777960769379, 1.2566370614359172, 1.5707963267948966, 1.8849555921538759, 2.199114857512855, 2.5132741228718345, 2.827433388230814, 3.141592653589793…
//➜ [ 4, 5, 6, 7, 8, 8, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 1, 2, 3, 4 ]
{
  const n = 20;
  const m = 8;
  const I = echo([...Array.from({length: n}, (_, i) => i), n]);
  const X = echo(I.map(i => i / n * Math.PI * 2));
  echo(X.map(x => Math.round(Math.sin(x) * m / 2 + m / 2)));
}