Уравнение для плоскости по координатам 3 точек - C#

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста, написать программу на C#, которая по координатам 3-ех точек плоскости (x1,x2,x3, y1,y2,y3,z1,z2,z3) находит коэффициенты A, B, C и D в уравнении плоскости Ax + By + Cz + D = 0. Спасибо!

Решение задачи: «Уравнение для плоскости по координатам 3 точек»

textual
Листинг программы
 private void button_Calc_Click(object sender, EventArgs e)
        {
 
 
                        double x1 = Convert.ToDouble(dataGridView1.Rows[0].Cells[1].Value); // 10
                       double y1 = Convert.ToDouble(dataGridView1.Rows[0].Cells[2].Value); //23;
                       double z1 = Convert.ToDouble(dataGridView1.Rows[0].Cells[3].Value); //45;
                       double x2 = Convert.ToDouble(dataGridView1.Rows[1].Cells[1].Value); //1;
                       double y2 = Convert.ToDouble(dataGridView1.Rows[1].Cells[2].Value); //12;
                       double z2 = Convert.ToDouble(dataGridView1.Rows[1].Cells[3].Value); //1;
                       double x3 = Convert.ToDouble(dataGridView1.Rows[2].Cells[1].Value); //2;
                       double y3 = Convert.ToDouble(dataGridView1.Rows[2].Cells[2].Value); //33;
                       double z3 = Convert.ToDouble(dataGridView1.Rows[2].Cells[3].Value); //5;
 
                        double a=0;
                       double b=0;
                       double c=0;
                       double d = 0;
                       SurfaceCalculation(x1, y1, z1, x2, y2, z2, x3, y3, z3,ref a,ref b,ref c,ref d);
            
                    }
 
                    public bool SurfaceCalculation(
                       double x1,
                       double y1,
                       double z1,
                       double x2,
                       double y2,
                       double z2,
                       double x3,
                       double y3,
                       double z3, 
                       ref double a,
                       ref double b,     
                       ref double c ,
                        ref double d    
                        )
 
           
            double k2 = x1 - x2;
            
            if (k2 == 0)
                return false;
          
 
            //-------------------
            a = y1 *(z2 - z3) + y2 *(z3 - z1) + y3* (z1 - z2) ;
            b = z1 *(x2 - x3) + z2 *(x3 - x1) + z3 *(x1 - x2); 
            c = x1 *(y2 - y3) + x2 *(y3 - y1) + x3 *(y1 - y2) ;
            d = -(x1 * (y2 * z3 - y3 * z2) + x2 * (y3 * z1 - y1 * z3) + x3 * (y1 * z2 - y2 * z1));
            //-----------------
 
            textBox1.Text = a.ToString();
            textBox2.Text = b.ToString(); 
            textBox3.Text = c.ToString(); 
            textBox4.Text =d.ToString();
            return true;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы