Объектно-ориентированный язык программирования С++ в примерах. Сивохин А.В. - 69 стр.

UptoLike

Составители: 

void put_point(int a,int b)/*-занести точку в модель; */
{ if(on_screen(a,b)) screen[a][b]=black; }
void put_point(point p) /*-занести точку в модель; */
{ put_point(p.x,p.y); }
void put_line(int x0,int y0,int x1,int y1)/*-занести линию*/
{ register dx=1;
int a=x1-x0;
if(a<0)dx=-1,a=-a; /*-смотрите литературу по */
register dy=1; /* машинной графике для выяс- */
int b=y1-y0; /* нения алгоритмов построе- */
if(b<0)dy=-1,b=-b; /* ния геометрических фигур; */
int two_a=2*a; /* [10,11,12,13] */
int two_b=2*b;
int xcrit=-b+two_a;
register eps=0;
for(;;){ put_point(x0,y0);
if(x0==x1&&y0==y1)break;
if(eps<=xcrit)x0+=dx,eps+=two_b;
if(eps>=a||a<=b)y0+=dy,eps-=two_a;
}
}
void put_line(point a,point b) /*-занести линию в модель; */
{ put_line(a.x,a.y,b.x,b.y); }
4.2.Библиотека фигур
Определим обобщенный список shape_list,в который будем
включать требуемые для построения изображения на экране фи-
гуры.Для этих целей воспользуемся макрокомандами из раздела
3.2.2:
struct shape; /*-предварительное определение типа фигуры; */
69
 void put_point(int a,int b)/*-занести точку в модель;               */
         { if(on_screen(a,b)) screen[a][b]=black; }


 void put_point(point p)                /*-занести точку в модель;   */
         { put_point(p.x,p.y); }


  void put_line(int x0,int y0,int x1,int y1)/*-занести линию*/
         { register dx=1;
             int a=x1-x0;
             if(a<0)dx=-1,a=-a;     /*-смотрите литературу по        */
             register dy=1;         /* машинной графике для выяс-    */
             int b=y1-y0;           /* нения алгоритмов построе-     */
             if(b<0)dy=-1,b=-b;     /* ния геометрических фигур;     */
             int two_a=2*a;         /* [10,11,12,13]                 */
             int two_b=2*b;
             int xcrit=-b+two_a;
             register eps=0;
             for(;;){ put_point(x0,y0);
                        if(x0==x1&&y0==y1)break;
                        if(eps<=xcrit)x0+=dx,eps+=two_b;
                        if(eps>=a||a<=b)y0+=dy,eps-=two_a;
                    }
         }


  void put_line(point a,point b) /*-занести линию в модель; */
         { put_line(a.x,a.y,b.x,b.y); }




                        4.2.Библиотека фигур


  Определим обобщенный список shape_list,в который будем
включать требуемые для построения изображения на экране фи-
гуры.Для этих целей воспользуемся макрокомандами из раздела
3.2.2:


  struct shape; /*-предварительное определение типа фигуры; */


                                   69