ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 01.04.2024

Просмотров: 39

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

for (int i = 0; i < 1; i++)

for (int j = 0; j < 4; j++)

textFile.Write("{0,6} ", Convert.ToString(B[i, j]));

textFile.WriteLine();

textFile.WriteLine("Далее необходимо совместить отрезок с осью ОY");

hip = Math.Round(Math.Sqrt(Math.Pow(B[0, 0], 2) + Math.Pow(B[0, 1], 2)), 4);

si = Math.Round(B[0, 0] / hip, 4);

co = Math.Round(B[0, 1] / hip, 4);

textFile.WriteLine("Гипотенуза = {0,6}, Sin = {1,6}, Cos={2,6}", Convert.ToString(Math.Round(hip, 4)), Convert.ToString(Math.Round(si, 4)), Convert.ToString(Math.Round(co, 4)));

MatrpZ(co, si);

textFile.WriteLine("Применим соответствующую матрицу поворота Rz и получим матрицу М3:");

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,6} ", Convert.ToString(Math.Round(M4[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M4[i, j], 4)));

textFile.WriteLine();

}

textFile.WriteLine("Составим матрицу поворота M4 относительно оси ОY на угол {0,4} градусов.", a);

M5 = Inverse(M4);

MultB(B, M4);

MultAll(C, M4);

si = Math.Round(Math.Sin(Math.PI * a / 180), 4);

co = Math.Round(Math.Cos(Math.PI * a / 180), 4);

MatrpY(co, si);

MultAll(C, M3);

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,6} ", Convert.ToString(Math.Round(M3[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M3[i, j], 4)));

textFile.WriteLine();

}

textFile.WriteLine("Найдем обратные матрицы:");

textFile.WriteLine("М5:");

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,6} ", Convert.ToString(Math.Round(M5[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M5[i, j], 4)));

textFile.WriteLine();

}

textFile.WriteLine("М6:");

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,6} ", Convert.ToString(Math.Round(M6[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M6[i, j], 4)));

textFile.WriteLine();

}

textFile.WriteLine("М7:");

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,6} ", Convert.ToString(Math.Round(M7[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M7[i, j], 4)));

textFile.WriteLine();

}

textFile.WriteLine("Составим супер-матрицу Ms=M1*M2*...*M7:");

MultAll(C, M5);

MultAll(C, M6);

MultAll(C, M7);

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,6} ", Convert.ToString(Math.Round(C[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(C[i, j], 4)));

textFile.WriteLine();

}

textFile.Close();

StreamReader sr = new StreamReader("textfile.txt");

string line;

while ((line = sr.ReadLine()) != null)



{

listBox1.Items.Add(line);

}

textFile.Close();

}

// процедура нахождения единой матрицы для оси Z

void MatrZ()

{

System.IO.StreamWriter textFile = new System.IO.StreamWriter(@"textfile.txt");

textFile.WriteLine("Необходимо совместить начало отрезка с началом координат. Для этого умножим начало отрезка на инцидентную ему матрицу:");

Matr1();

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,5} ", Convert.ToString(Math.Round(M1[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M1[i, j], 3)));

textFile.WriteLine();

}

textFile.WriteLine("Умножив начальную точку О на М1, получим:");

textFile.WriteLine("0 0 0 1");

textFile.WriteLine("Умножив конечную точку В на М1, получим:");

M7 = Inverse(M1);

MultB(B, M1);

for (int i = 0; i < 1; i++)

for (int j = 0; j < 4; j++)

textFile.Write("{0,6} ", Convert.ToString(B[i, j]));

textFile.WriteLine();

textFile.WriteLine("Cовместить конец отрезка с плоскостями ZOX (ZOY)");

double hip = Math.Round(Math.Sqrt(Math.Pow(B[0, 0], 2) + Math.Pow(B[0, 1], 2)), 4);

double si = Math.Round(B[0, 0] / hip,4);

double co = Math.Round(B[0, 1] / hip, 4);

textFile.WriteLine("Гипотенуза = {0,6}, Sin = {1,6}, Cos={2,6}", Convert.ToString(Math.Round(hip, 4)), Convert.ToString(Math.Round(si, 4)), Convert.ToString(Math.Round(co, 4)));

MatrpZ(co, si);

textFile.WriteLine("Применим соответствующую матрицу поворота Rz и получим матрицу М2:");

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,5} ", Convert.ToString(Math.Round(M4[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M4[i, j], 3)));

textFile.WriteLine();

}

M6 = Inverse(M4);

MultAll(M1, M4);

MultB(B, M4);

textFile.WriteLine("Умножив матрицу, соответствующую конечной точке на матрицу M2, получим:");

for (int i = 0; i < 1; i++)

for (int j = 0; j < 4; j++)

textFile.Write("{0,6} ", Convert.ToString(B[i, j]));

textFile.WriteLine();

textFile.WriteLine("Далее необходимо совместить отрезок с осью ОZ");

hip = Math.Round(Math.Sqrt(Math.Pow(B[0, 1], 2) + Math.Pow(B[0, 2], 2)), 4);

si = Math.Round(B[0, 1] / hip, 4);

co = Math.Round(B[0, 2] / hip, 4);

textFile.WriteLine("Гипотенуза = {0,6}, Sin = {1,6}, Cos={2,6}", Convert.ToString(Math.Round(hip, 4)), Convert.ToString(Math.Round(si, 4)), Convert.ToString(Math.Round(co, 4)));

MatrpX(co, si);

textFile.WriteLine("Применим соответствующую матрицу поворота Rx и получим матрицу М3:");

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,5} ", Convert.ToString(Math.Round(M2[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M2[i, j], 3)));


textFile.WriteLine();

}

textFile.WriteLine("Составим матрицу поворота M4 относительно оси ОZ на угол {0,4} градусов.", a);

M5 = Inverse(M2);

MultB(B, M2);

MultAll(C, M2);

si = Math.Round(Math.Sin(Math.PI * a / 180), 4);

co = Math.Round(Math.Cos(Math.PI * a / 180), 4);

MatrpZ(co, si);

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,5} ", Convert.ToString(Math.Round(M4[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M4[i, j], 3)));

textFile.WriteLine();

}

textFile.WriteLine("Найдем обратные матрицы:");

textFile.WriteLine("М5:");

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,5} ", Convert.ToString(Math.Round(M5[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M5[i, j], 3)));

textFile.WriteLine();

}

textFile.WriteLine("М6:");

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,5} ", Convert.ToString(Math.Round(M6[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M6[i, j], 3)));

textFile.WriteLine();

}

textFile.WriteLine("М7:");

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,5} ", Convert.ToString(Math.Round(M7[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(M7[i, j], 3)));

textFile.WriteLine();

}

textFile.WriteLine("Составим супер-матрицу Ms=M1*M2*...*M7:");

MultAll(C, M4);

MultAll(C, M5);

MultAll(C, M6);

MultAll(C, M7);

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 4; j++)

if (C[i, j] < 0) textFile.Write("{0,5} ", Convert.ToString(Math.Round(C[i, j], 2)));

else textFile.Write("{0,6} ", Convert.ToString(Math.Round(C[i, j], 3)));

textFile.WriteLine();

}

textFile.Close();

StreamReader sr = new StreamReader("textfile.txt");

string line;

while ((line = sr.ReadLine()) != null)

{

listBox1.Items.Add(line);

}

textFile.Close();

}

// основная процедура

private void button1_Click(object sender, EventArgs e)

{

O[0,0] = Convert.ToInt16(textBox1.Text,10);

O[0, 1] = Convert.ToInt16(textBox2.Text, 10);

O[0, 2] = Convert.ToInt16(textBox3.Text, 10);

O[0, 3] = 1;

B[0, 0] = Convert.ToInt16(textBox4.Text, 10);

B[0, 1] = Convert.ToInt16(textBox5.Text, 10);

B[0, 2] = Convert.ToInt16(textBox6.Text, 10);

B[0, 3] = 1;

a = Convert.ToInt16(textBox8.Text, 10);

if (radioButton1.Checked) { MatrX(); }

else if (radioButton2.Checked) { MatrY(); }

else MatrZ();}}

}