private static Gain Focus(AUTD autd, Vector3d point) { var devNum = autd.NumDevices; var data = new ushort[devNum, AUTD.NumTransInDevice]; var waveNumber = 2.0 * Math.PI / autd.Wavelength; for (var dev = 0; dev < devNum; dev++) { for (var i = 0; i < AUTD.NumTransInDevice; i++) { var tp = autd.TransPosition(dev, i); var dist = (tp - point).L2Norm; var phase = ToPhase(waveNumber * dist); const ushort duty = 0xFF; data[dev, i] = (ushort)((duty << 8) | phase); } } return(Gain.Custom(data)); }