en=new Pen (Color. FromArgb (255 , rgb [0], rgb [1], rgb [2])); (int yt=miny; yt lt;=maxy; yt ++)
{. Clear (); (y [0]!=Y [1])
{= (float) (yt-y [1])/(float) (y [0] - y [1]); (t gt;=0 amp; amp; t lt;=1). Insert (0, (int) (t * x [0] + (1-t) * x [1]));
}
{= (float) (yt-y [2])/(float) (y [1] - y [2]); (t gt;=0 amp; amp; t lt;=1). Insert (0, (int) (t * x [1] + (1-t) * x [2]));
}
{= (float) (yt-y [2])/(float) (y [0] - y [2]); (t gt;=0 amp; amp; t lt;=1). Insert (0, (int) (t * x [0] + (1-t) * x [2]));
}. DrawLine (myPen, (int) mas [0], yt, (int) mas [1], yt); (mas. Count == 3)
{. DrawLine (myPen, (int) mas [1], yt, (int) mas [2], yt);
}
}
}
}
}
Форма: System; System. Collections. Generic; System. ComponentModel; System. Data; System. Drawing; System. Linq; System. Text; System. Windows. Forms; System. Drawing; System. Drawing. Drawing2D; Laba3
{partial class Form1: Form
{int k=0; int [] x=new int [3]; int [] y=new int [3]; int [] rgb=new int [3]; Form1 ()
{();
} void Form1_MouseDown (object sender, MouseEventArgs e)
{(k lt;=2)
{[k]=e.X; [k]=e.Y; (k == 2)
{[0]=255; [2]=0; [2]=0; g=Graphics. FromHwnd (this. Handle); f=new FillTriangle () ;. Fill (g, x, y, rgb) ;. Dispose ();
} ++;
};
}
}
}
Малюнок 3.1 Реалізація програми, яка демонструє метод сканує рядки для зафарбовування трикутних областей
. Паралельна проекція
Завдання: Написати програму, яка будує на екрані зображення опуклого тривимірного тіла при паралельній проекції. Видалити невидимі грані. Видимі грані зафарбувати відтінками сірого кольору в залежності від розташування відповідної грані і джерела світла. Для зафарбовування граней використовувати метод сканує рядки [2].
Рішення:
Клас:
using System;
using System. Collections. Generic; System. Linq; System. Text; System. Drawing; System. Collections; Triangle
{FillTriangle
{void Fill (Graphics g, int [] x, int [] y, int [] rgb)
{maxy, miny; mas=new ArrayList (); a; myPen=new Pen (Color. FromArgb (255, rgb [0], rgb [1], rgb [2])); (Math. Abs ( (x [1] - x [0]) * (y [2] - y [0]) - (x [2] - x [0]) * (y [1] - y [0])) lt; =0.001)
{. DrawLine (myPen, x [0], y [0], x [1], y [1]) ;. DrawLine (myPen, x [1], y [1], x [2], y [2]) ;;
}=y [0];=maxy; (int i=1; i lt;=2; i ++)
{(y [i] gt; maxy) maxy=y [i]; (y [i] lt; miny) miny=y [i];
} (int yt=miny; yt lt;=maxy; yt ++)
{. Clear (); (y [0]!=Y [1])
{= (float) (yt - y [1])/(float) (y [0] - y [1]); (a gt;=0 amp; amp; a lt;=1)
{. Insert (0, (int) (a * x [0] + (1 - a) * x [1]));
}
} (y [1]!=y [2])
{= (float) (yt - y [2])/(float) (y [1] - y [2]); (a gt;=0 amp; amp; a lt;=1)
{. Insert (0, (int) (a * x [1] + (1 - a) * x [2]));
}
} (y [0]!=y [2])
{= (float) (yt - y [2])/(float) (y [0] - y [2]); (a gt;=0 amp; amp; a lt;=1)
{. Insert (0, (int) (a * x [0] + (1 - a) * x [2]));
}
} (mas. Count == 3)
{. DrawLine (myPen, (int) mas [0], yt, (int) mas [1], yt) ;. DrawLine (myPen, (int) mas [1], yt, (int) mas [2], yt);
}. DrawLine (myPen, (int) mas [0], yt, (int) mas [1], yt);
}
}
}
}
Форма: System; System. Collections. Generic; System. ComponentModel; System. Data; System. Drawing; System. Linq; System. Text; System. Windows. Forms; System. Drawing. Drawing2D; Lab_4
{partial class Form1: Form
{double [] xv={0, 2, 0, 0, 2, 0}; double [] yv={0, 0, 2, 0, 0, 2}; double [] zv={0, 0, 0, 2, 2, 2}; double [] xpl=new double [6]; double [] ypl=new double [6]; int [] xfrm=new int [6]; int [] yfrm=new int [6]; int [,] gran1=new int [3, 4]; int [,] gran2=new int [2, 3]; double u1x, u1y, u1z, u2x, u2y, u2z, u3x, u3y, u3z; double rx, ry, rz; double ax, ay, az; double sx, sy, sz; double r; double a, b, c, d; Form1 ()
{();
} void Form1_Load (object sender, EventArgs e)
{= 10; ry=5; rz=5;=1; ay=1; az=1;=- 5; sy=1; sz=5;=Math. Sqrt (3); x=ax - rx; u3y=ay - ry; u3z=az - rz; t=Math. Sqrt (u3x * u3x + u3y * u3y + u3z * u3z); x=u3x/t; u3y=u3y/t; u3z=u3z/t; x=u3y; u1y=- u3x; u1z=0;=Math. Sqrt (u1x * u1x + u1y * u1y + u1z * u1z); x=u1x/t; u1y=u1y/t; u1z=u1z/t; x=u1y * u3z - u3y * u1z; u2y=u3x * u1z - u1x * u3z; u2z=u1x * u3y - u3x * u1y;=Math. Sqrt (u2x * u2x + u2y * u2y + u2z * u2z); x=u2x/t; u2y=u2y/t; u2z=u2z/t; [1, 0]=0; gran1 [1, 1]=1; gran1 [1, 2]=4; gran1 [1, 3]=3; [0, 0]=0; gran1 [0, 1]=3; gran1 [0, 2]=5; gran1 [0, 3]=2; [2, 0]=1; gran1 [2, 1]=2; gran1 [2...