TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

Практическое задание 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;

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz