/// <summary> /// Tin计算 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolStripButton3_Click(object sender, EventArgs e) { double hr = double.Parse(toolStripTextBox1.Text); Tin = new TIN(hr, tpoints); //实例化三角网类 Tin.CalTin(); //构建三角网并计算体积完成 contourLine = Tin.GetContourLine(); //获取等高线 GetPic_Line(zoom, go[1]); toolStripTextBox3.Text = Tin.H0.ToString("f2"); //显示平衡高程 tabControl1.SelectedTab = tabPage2; ReportShow(); }
private bool SetV() { //全挖或全填 if (hr <= TIN.Min(p1.h, p2.h, p3.h) || hr >= TIN.Max(p1.h, p2.h, p3.h)) { if (hr <= TIN.Min(p1.h, p2.h, p3.h)) //全挖 { V_cut = Area * (Hage - hr); V_fill = 0; } else //全填 { V_fill = Area * (Hage - hr); V_cut = 0; } } else { if (S1.Incut.Num == -1) { if (dh3 >= 0) { double Area1 = Math.Abs((S2.Incut.x - p3.x) * (S3.Incut.y - p3.y) - (S3.Incut.x - p3.x) * (S2.Incut.y - p3.y)) / 2; V_cut = Area1 * ((p3.h + hr + hr) / 3 - hr); V_fill = (Area - Area1) * ((hr + hr + p1.h + p2.h) / 4 - hr); } else { double Area1 = Math.Abs((S2.Incut.x - p3.x) * (S3.Incut.y - p3.y) - (S3.Incut.x - p3.x) * (S2.Incut.y - p3.y)) / 2; V_fill = Area1 * ((p3.h + hr + hr) / 3 - hr); V_cut = (Area - Area1) * ((hr + hr + p1.h + p2.h) / 4 - hr); } } else if (S2.Incut.Num == -1) { if (dh1 >= 0) { double Area1 = Math.Abs((S1.Incut.x - p1.x) * (S3.Incut.y - p1.y) - (S3.Incut.x - p1.x) * (S1.Incut.y - p1.y)) / 2; V_cut = Area1 * ((p1.h + hr + hr) / 3 - hr); V_fill = (Area - Area1) * ((hr + hr + p2.h + p3.h) / 4 - hr); } else { double Area1 = Math.Abs((S1.Incut.x - p1.x) * (S3.Incut.y - p1.y) - (S3.Incut.x - p1.x) * (S1.Incut.y - p1.y)) / 2; V_fill = Area1 * ((p1.h + hr + hr) / 3 - hr); V_cut = (Area - Area1) * ((hr + hr + p2.h + p3.h) / 4 - hr); } } else if (S3.Incut.Num == -1) { if (dh2 >= 0) { double Area1 = Math.Abs((S1.Incut.x - p2.x) * (S2.Incut.y - p2.y) - (S2.Incut.x - p2.x) * (S1.Incut.y - p2.y)) / 2; V_cut = Area1 * ((p2.h + hr + hr) / 3 - hr); V_fill = (Area - Area1) * ((hr + hr + p1.h + p3.h) / 4 - hr); } else { double Area1 = Math.Abs((S1.Incut.x - p2.x) * (S2.Incut.y - p2.y) - (S2.Incut.x - p2.x) * (S1.Incut.y - p2.y)) / 2; V_fill = Area1 * ((p2.h + hr + hr) / 3 - hr); V_cut = (Area - Area1) * ((hr + hr + p1.h + p3.h) / 4 - hr); } } } return(true); }