private void Fourier_MouseDown(object sender, MouseButtonEventArgs e) { if (e.ChangedButton == MouseButton.Right) { if (ffff != null) { var ns = new Ns(ffff); var p = new PopUp() { Height = 425, Width = 805, WindowStyle = WindowStyle.SingleBorderWindow, Title = "Fouriers", Owner = this, WindowStartupLocation = WindowStartupLocation.CenterOwner, AllowsTransparency = false }; ns.VerticalAlignment = VerticalAlignment.Center; ns.HorizontalAlignment = HorizontalAlignment.Center; p.Content = ns; p.ShowDialog(); } } }
private void NewFunction_Click(object sender, RoutedEventArgs e) { var gg = new Grid() { Background = Brushes.SkyBlue, Width = 300, Height = 200, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, }; gg.Children.Add(new TextBlock { Text = "please wait", VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center }); Grid.SetRow(gg, 1); MainGrid.Children.Add(gg); anbn.Children.Clear(); var f = new NewFunction(); var p = new PopUp() { Content = f, Owner = this }; p.Width = 730; p.Height = 340; p.ShowDialog(); if (UI.NewFunction.Piese == false) { if (UI.NewFunction.Type == FunctionType.normal) { var sf = new SimpleFourier(UI.NewFunction.Func, UI.NewFunction.Period, 40); ffff = sf; Fourier.Draw(sf.FourierSeries(30), -10, 10, 0.01); anbn.Children.Add(new TextBlock { Text = "a0: " + sf.a0.ToString(), VerticalAlignment = VerticalAlignment.Stretch, TextAlignment = TextAlignment.Center }); for (int i = 0; i < sf.an.Length; i++) { anbn.Children.Add(new TextBlock { Text = "a" + (i + 1).ToString() + ": " + sf.an[i].ToString() + " b" + (i + 1).ToString() + ": " + sf.bn[i].ToString(), VerticalAlignment = VerticalAlignment.Stretch, TextAlignment = TextAlignment.Center }); } Dynamics.GetValues(sf.Function, -sf.Period, sf.Period, 0.001, out KeyValuePair <double, double>[] values); Function.Draw(values); } else { var sf = new OddEvenFourier(UI.NewFunction.Func, UI.NewFunction.Period, 40, UI.NewFunction.Type); ffff = sf; Fourier.Draw(sf.FourierSeries(30), -10, 10, 0.01); anbn.Children.Add(new TextBlock { Text = "a0: " + sf.a0.ToString(), VerticalAlignment = VerticalAlignment.Stretch, TextAlignment = TextAlignment.Center }); for (int i = 0; i < sf.an.Length; i++) { anbn.Children.Add(new TextBlock { Text = "a" + (i + 1).ToString() + ": " + sf.an[i].ToString() + " b" + (i + 1).ToString() + ": " + sf.bn[i].ToString(), VerticalAlignment = VerticalAlignment.Stretch, TextAlignment = TextAlignment.Left }); } Dynamics.GetValues(sf.Function, 0, sf.Period, 0.001, out KeyValuePair <double, double>[] values); var othvals = new List <KeyValuePair <double, double> >(); if (UI.NewFunction.Type == FunctionType.even) { foreach (var item in values) { //othvals.Add(new KeyValuePair<double, double>(item.Key, item.Value)); othvals.Add(new KeyValuePair <double, double>(-item.Key, item.Value)); } } else if (UI.NewFunction.Type == FunctionType.odd) { foreach (var item in values) { //othvals.Add(new KeyValuePair<double, double>(item.Key, item.Value)); othvals.Add(new KeyValuePair <double, double>(-item.Key, -item.Value)); } } foreach (var item in values) { othvals.Add(new KeyValuePair <double, double>(item.Key, item.Value)); } Function.Draw(othvals.ToArray()); } } else { var sf = new PiecewiseFourier(40); for (int i = 0; i < UI.NewFunction.Pieses.Count; i++) { sf.AddCriterion(UI.NewFunction.Pieses[i], UI.NewFunction.Froms[i], UI.NewFunction.Tos[i]); } sf.Criterioned(); ffff = sf; var vs = new List <KeyValuePair <double, double> >(); foreach (var item in sf.Values) { vs.Add(new KeyValuePair <double, double>(item.Key, item.Value)); } Function.Draw(vs.ToArray()); Fourier.Draw(sf.FourierSeries(30), -10, 10, 0.01); anbn.Children.Add(new TextBlock { Text = "a0: " + sf.a0.ToString(), VerticalAlignment = VerticalAlignment.Stretch, TextAlignment = TextAlignment.Left }); for (int i = 0; i < sf.an.Length; i++) { anbn.Children.Add(new TextBlock { Text = "a" + (i + 1).ToString() + ": " + sf.an[i].ToString() + " b" + (i + 1).ToString() + ": " + sf.bn[i].ToString(), VerticalAlignment = VerticalAlignment.Stretch, TextAlignment = TextAlignment.Left }); } } MainGrid.Children.Remove(gg); }