private void BuildUsingKH(IList <TiltData> tilts) { FiltType = FilterType.KarousHjelt; ZAxisTitle = "KH"; ZUnit = "%"; var x = new List <float>(); var y = new List <float>(); var z = new List <float>(); foreach (var kh in tilts.Select(tilt => VlfFilter.KarousHjelt(tilt, 0, 1))) { for (var i = 0; i < kh.Npts; i++) { var xy = Displacement.NextPoint(kh.X, kh.Y, kh.Bearing, kh.Spacing * (i - 1)); x.Add(xy[0]); y.Add(xy[1]); z.Add(kh.Values[i]); } } Npts = x.Count; XValues = new float[x.Count]; YValues = new float[y.Count]; ZValues = new float[z.Count]; XValues = x.ToArray(); YValues = y.ToArray(); ZValues = z.ToArray(); CalcGridSize(); }
private void tsKarousHjelt_Click(object sender, EventArgs e) { var selectedNode = treeViewMain.SelectedNode; var tiltData = selectedNode.Tag as TiltData; if (tiltData == null) { return; } if (tiltData.Npts < 6) { MessageBox.Show(@"There should be minimum of 7 data for this filter to work."); return; } var uniqeName = FindUniqeName(selectedNode.Name, treeViewMain.Nodes["NodeKH"]); if (InputPrompt.InputStringBox("Karous Hjelt-Filter", "Enter a name.", ref uniqeName) != DialogResult.OK) { return; } var skin = 0f; if ( InputPrompt.InputNumberBox("Karous Hjelt-Filter", $"Skin depth normalization. Enter 0 to ignore skin depth", ref skin) != DialogResult.OK) { return; } var kh = VlfFilter.KarousHjelt(tiltData, skin); kh.Rename(uniqeName); AddNode(uniqeName, treeViewMain.Nodes["NodeKH"], kh); if (kh.RawLength > 150) { MessageBox.Show( @"Due to the limitation of gridding implementation in this version, the pseudosection could not be shown. However, you can still export the result into an external file.", @"Data Too Large To Grid", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } StartGriddingWorker(new Surface2D(kh)); }