TURBO PASCAL |
Новости |
Практическое задание N 1. 57
1. Создать
уменьшающийся треугольник (деление сторон
9:1) и пульсирующий треугольник.
2. Создать
уменьшающийся прямоугольник (деление
сторон 3:1) и пульсирующий прямоугольник.
Примечание к п. 1 и п. 2: пульсация фигуры достигается
перерисовкой ее в режиме XorPut,
при многократном увеличении и
последующем уменьшении коэффициента
масштабирования, например, по
закону: K= K + i*0.
02. Где i -
параметр цикла.
3. Симметричное
отображение фигуры.
Пусть хz -
ось зеркальной симметрии,
тогда координата "yzi" i-ой
точки фигуры в системе координат (xz, yz)
определяется по формуле:
yzi= (yi-yf)*cos(A)-(xi-xf)*sin(A), где xf, yf
- координаты любой точки на
оси зеркальной симметрии, xi, yi - координаты отображаемой
точки в системе координат экрана, A -
угол наклона оси симметрии относительно
оси "x" по часовой стрелке.
Тогда координаты отраженной точки в
системе координат (X0Y) определяются по
формулам:
xf
xoi xi
X
0
xoi =
xi + 2*yzi*sin(A);
yf *
yoi = yi -
2*yzi*cos(A);
yi
yoi
XZ
Y
YZ
Приведем пример операторов
для расчета координат xo[ i],
yo[ i] точек фигуры зеркально
отображенной относительно оси,
наклоненной под углом "A" и
проходящей через точку с координатами xf, yf.
for i:=
1 to N do
begin
yzi:= round((y[i]-yf)*cos(A) - (x[i]-xf)*sin(A));
xo[i]:= x[i] + 2*round(yzi*sin(A));
yo[i]:= y[i] - 2*round(yzi*cos(A))
end; |
(с) Все права защищены. По всем интересующим вопросам прошу писать электронный адрес |