private void DrawStreamLineChange(object sender, EventArgs e) { if (sls != null) { //Debug.WriteLine("sls: " + sls.GetStreamLines().Count); if (displayStreamLines.Checked && sls.GetStreamLines().Count > 0) { List <StreamLine> temp = new List <StreamLine>(); for (int i = 0; i < sls.GetStreamLines().Count; i += streamLineDensity.Value) { temp.Add(sls.GetStreamLines()[i]); } //Debug.WriteLine("Drawing " + temp.Count + " streamlines"); picture.DrawStream(true, temp); } else { picture.DrawStream(false, null); } int valx = int.Parse(xAxisValue.Text); int valy = int.Parse(yAxisValue.Text); int valz = int.Parse(zAxisValue.Text); picture.RotateObject(Deg2Rad(valx), Deg2Rad(valy), Deg2Rad(valz)); picture.DrawScaledObjectOn(canvas); } }
public List <Thread> PrepareField(ManualResetEvent notifier, StreamLines sls, int maxThreads) { List <StreamLine> streamLines = sls.GetStreamLines(); if (streamLines.Count > 0) { bulkList = new List <SeedPoint>(streamLines.Count * streamLines[0].Points.Count); } else { Debug.WriteLine("[WARNING] No streamsLines were created previously"); bulkList = new List <SeedPoint>(); } double minFTLE = double.PositiveInfinity; double maxFTLE = double.NegativeInfinity; foreach (StreamLine sl in streamLines) { foreach (SeedPoint sp in sl.Points) { if (!double.IsNaN(sp.FTLE)) { if (sp.FTLE < minFTLE) { minFTLE = sp.FTLE; } if (sp.FTLE > maxFTLE) { maxFTLE = sp.FTLE; } } } } Debug.WriteLine("MinFTLE: " + minFTLE + "; MaxFTLE: " + maxFTLE); foreach (StreamLine sl in streamLines) { foreach (SeedPoint sp in sl.Points) { if (double.IsNaN(sp.FTLE)) { sp.FTLE = maxFTLE; } } } List <Thread> threads = new List <Thread>(streamLines.Count); semaphore = new Semaphore(maxThreads, maxThreads); foreach (StreamLine sl in streamLines) { Thread t = new Thread(AnalyzeLine); t.Start(new List <object> { sl, notifier }); threads.Add(t); } return(threads); }