Уравнение для плоскости по координатам 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;
}