private void ParallelStaticComputation_DoWork(object sender, DoWorkEventArgs e) { // Calcul de l'orbite de la comète orbitalPoints = ComputeOrbit(); // Calcul de la forme de la trainée de la comète for (double nu = -120; nu <= 120; nu += 30) { TailModel tailModel = comet.ComputeSyndynams(nu); tailModels.Add(tailModel); } }
private void ParallelAnimationComputation_DoWork(object sender, DoWorkEventArgs e) { // Calcul de l'orbite de la comète orbitalPoints = ComputeOrbit(); // Calcul de la forme de la trainée de la comète for (double nu = -trueAnomalyThreshold; nu <= trueAnomalyThreshold; nu += 0.5) { TailModel tailModel = comet.ComputeSyndynams(nu); tailModels.Add(tailModel); parallelAnimationComputation.ReportProgress(0); System.Threading.Thread.Sleep(time); } }
private void DrawCometTails(TailModel a_tailModel) { // Dessin de la comète Ellipse nucleus = new Ellipse(); nucleus.Width = 3; nucleus.Height = 3; nucleus.Fill = Brushes.OrangeRed; nucleus.Stroke = Brushes.OrangeRed; canvas.Children.Add(nucleus); Canvas.SetLeft(nucleus, centerX + -a_tailModel.NucleusPosition.X * scale - 1.65); Canvas.SetTop(nucleus, centerY + a_tailModel.NucleusPosition.Y * scale - 1.65); Polyline cometShape = new Polyline(); cometShape.Fill = Brushes.Transparent; cometShape.Stroke = Brushes.OrangeRed; cometShape.StrokeThickness = 1; foreach (var point in a_tailModel.SyndamA) { cometShape.Points.Add(new System.Windows.Point(-point.X * scale, point.Y * scale)); } canvas.Children.Add(cometShape); Canvas.SetLeft(cometShape, centerX); Canvas.SetTop(cometShape, centerY); cometShape = new Polyline(); cometShape.Fill = Brushes.Transparent; cometShape.Stroke = Brushes.OrangeRed; cometShape.StrokeThickness = 1; foreach (var point in a_tailModel.SyndamB) { cometShape.Points.Add(new System.Windows.Point(-point.X * scale, point.Y * scale)); } canvas.Children.Add(cometShape); Canvas.SetLeft(cometShape, centerX); Canvas.SetTop(cometShape, centerY); }