{
MessageBox.Show("Неправильно введены данные!");
return;
}
for (int i = 0; i < 8; i++)
{
old_points[0, i] = points[0, i];
old_points[1, i] = points[1, i];
old_points[2, i] = points[2, i];
}
perenos(xx, yy, zz);
Graph_Update();
koords_print();
}
void Graph_Update()
{
pnlXOY.Invalidate();
pnlXOZ.Invalidate();
pnlYOZ.Invalidate();
}
private void btnRotate_Start_Click(object sender, EventArgs e)
{
float ugol,xx,yy,zz;
int XYZ=0;
try
{
ugol = float.Parse(txtRotate_ugol.Text);
xx = float.Parse(txtRel_X.Text);
yy = float.Parse(txtRel_Y.Text);
zz = float.Parse(txtRel_Z.Text);
}
catch
{
MessageBox.Show("Неправильно введены данные!");
return;
}
local_x = xx;
local_y = yy;
local_z = zz;
if (btnRotate_X.Checked) XYZ = 1;
if (btnRotate_Y.Checked) XYZ = 2;
if (btnRotate_Z.Checked) XYZ = 3;
for (int i = 0; i < 8; i++)
{
old_points[0, i] = points[0, i];
old_points[1, i] = points[1, i];
old_points[2, i] = points[2, i];
}
perenos(-xx, -yy, -zz);
povorot(ugol, XYZ);
perenos(xx, yy, zz);
Graph_Update();
koords_print();
}
private void btnMashtab_Start_Click(object sender, EventArgs e)
{
float kx, ky, kz,xx,yy,zz;
try
{
kx = float.Parse(txtMashtab_X.Text);
ky = float.Parse(txtMashtab_Y.Text);
kz = float.Parse(txtMashtab_Z.Text);
xx = float.Parse(txtRel_X.Text);
yy = float.Parse(txtRel_Y.Text);
zz = float.Parse(txtRel_Z.Text);
}
catch
{
MessageBox.Show("Неправильно введены данные!");
return;
}
if (kx * ky * kz == 0)
{
MessageBox.Show("Коэффициенты должны быть ненулевыми!");
return;
}
local_x = xx;
local_y = yy;
local_z = zz;
for (int i = 0; i < 8; i++)
{
old_points[0, i] = points[0, i];
old_points[1, i] = points[1, i];
old_points[2, i] = points[2, i];
}
perenos(-xx, -yy, -zz);
mashtab(kx, ky, kz);
perenos(xx, yy, zz);
Graph_Update();
koords_print();
}
private void btnNapr_X_CheckedChanged(object sender, EventArgs e)
{
btnNormal_X.Enabled = false;
btnNormal_Y.Enabled = true;
btnNormal_Z.Enabled = true;
}
private void btnNapr_Y_CheckedChanged(object sender, EventArgs e)
{
btnNormal_X.Enabled = true;
btnNormal_Y.Enabled = false;
btnNormal_Z.Enabled = true;
}
private void btnNapr_Z_CheckedChanged(object sender, EventArgs e)
{
btnNormal_X.Enabled = true;
btnNormal_Y.Enabled = true;
btnNormal_Z.Enabled = false;
}
private void btnSdvig_Start_Click(object sender, EventArgs e)
{
float koeff,xx,yy,zz;
int k = 0;
try
{
koeff = float.Parse(txtKoeff_Sdvig.Text);
xx = float.Parse(txtRel_X.Text);
yy = float.Parse(txtRel_Y.Text);
zz = float.Parse(txtRel_Z.Text);
}
catch
{
MessageBox.Show("Неправильно введены данные!");
return;
}
local_x = xx;
local_y = yy;
local_z = zz;
for (int i = 0; i < 8; i++)
{
old_points[0, i] = points[0, i];
old_points[1, i] = points[1, i];
old_points[2, i] = points[2, i];
}
if (btnNapr_X.Checked)
{
if (btnNormal_Y.Checked)
{
k = 1;
perenos(0,-yy,0);
sdvig(koeff, k);
perenos(0, yy, 0);
}
if (btnNormal_Z.Checked)
{
k = 2;
perenos(0, 0, -zz);
sdvig(koeff, k);
perenos(0, 0, zz);
}
}
if (btnNapr_Y.Checked)
{
if (btnNormal_X.Checked)
{
k = 3;
perenos(-xx, 0, 0);
sdvig(koeff, k);
perenos(xx, 0, 0);
}
if (btnNormal_Z.Checked)
{
k = 4;
perenos(0, 0, -zz);
sdvig(koeff, k);
perenos(0, 0, zz);
}
}
if (btnNapr_Z.Checked)
{
if (btnNormal_X.Checked)
{
k = 5;
perenos(-xx, 0, 0);
sdvig(koeff, k);
perenos(xx, 0, 0);
}
if (btnNormal_Y.Checked)
{
k = 6;
perenos(0, -yy, 0);
sdvig(koeff, k);
perenos(0, yy, 0);
}
}
Graph_Update();
koords_print();
}
}
}
Вывод: в данной лабораторной работе я научился выполнять аффинные преобразования в пространстве: перенос, сдвиг, поворот, масштабирование, а также научился реализовывать эти преобразования программно.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.