private void RedrawCrossfeed(WWCrossFeedFir crossFeed) { for (int i = 0; i < crossFeed.Count(); ++i) { DrawRoute(crossFeed.GetNth(i)); } }
void BackgroundWorkerDoWork(object sender, DoWorkEventArgs e) { var args = e.Argument as TraceArgs; var coeff = new List <Dictionary <int, double> >(); WWCrossFeedFir crossfeed = args.CrossfeedFir; crossfeed.WallReflectionType = WWCrossFeedFir.ReflectionType.Diffuse; crossfeed.Start(mRoom); crossfeed.TraceAll(mRoom); coeff.AddRange(crossfeed.OutputFirCoeffs(args.SampleRate)); crossfeed.Clear(); crossfeed.WallReflectionType = WWCrossFeedFir.ReflectionType.Specular; crossfeed.Start(mRoom); crossfeed.TraceAll(mRoom); coeff.AddRange(crossfeed.OutputFirCoeffs(args.SampleRate)); crossfeed.Clear(); WWCrossFeedFir.OutputFile(args.SampleRate, coeff.ToArray(), args.FileName); }
private WWCrossFeedFir CreateCrossFeedFirFromUseInput() { double wallReflectionRatio; Double.TryParse(mWallReflectionRatio.Text, out wallReflectionRatio); int maxReflectionCount; Int32.TryParse(mTextBoxMaxReflectionCount.Text, out maxReflectionCount); double diffuseReflectionGain; Double.TryParse(mTextBoxDiffuseReflectionGain.Text, out diffuseReflectionGain); WWCrossFeedFir crossfeed = new WWCrossFeedFir(); crossfeed.WallReflectionType = WWCrossFeedFir.ReflectionType.Diffuse; // エネルギー比 to 振幅比の変換。 crossfeed.WallReflectionRatio = Math.Sqrt(wallReflectionRatio); crossfeed.MaxReflectionCount = maxReflectionCount; crossfeed.DiffuseReflectionGain = Math.Pow(10.0, diffuseReflectionGain / 10.0); return(crossfeed); }
private void mButtonRayTest_Click(object sender, RoutedEventArgs e) { if (!UpdateParameters()) { return; } var reflectionType = (WWCrossFeedFir.ReflectionType)mComboBoxReflectionType.SelectedIndex; int rayCount; Int32.TryParse(mTextBoxRayCount.Text, out rayCount); mCrossFeed = CreateCrossFeedFirFromUseInput(); mCrossFeed.WallReflectionType = reflectionType; mCrossFeed.Start(mRoom); for (int i = 0; i < rayCount; ++i) { mCrossFeed.Trace(mRoom, reflectionType, 0); mCrossFeed.Trace(mRoom, reflectionType, 1); } UpdateRoomCanvas(); }
public void SetCrossFeed(WWCrossFeedFir crossFeed) { mCrossFeed = crossFeed; }
private WWCrossFeedFir CreateCrossFeedFirFromUseInput() { double wallReflectionRatio; Double.TryParse(mWallReflectionRatio.Text, out wallReflectionRatio); int maxReflectionCount; Int32.TryParse(mTextBoxMaxReflectionCount.Text, out maxReflectionCount); double diffuseReflectionGain; Double.TryParse(mTextBoxDiffuseReflectionGain.Text, out diffuseReflectionGain); WWCrossFeedFir crossfeed = new WWCrossFeedFir(); crossfeed.WallReflectionType = WWCrossFeedFir.ReflectionType.Diffuse; // エネルギー比 to 振幅比の変換。 crossfeed.WallReflectionRatio = Math.Sqrt(wallReflectionRatio); crossfeed.MaxReflectionCount = maxReflectionCount; crossfeed.DiffuseReflectionGain = Math.Pow(10.0, diffuseReflectionGain / 10.0); return crossfeed; }