ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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();}}
}