Esempio n. 1
0
        /// <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();
        }
Esempio n. 2
0
 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);
 }