⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhixian.c

📁 计算机图形学
💻 C
字号:
 #define pi 3.141592
#define MAX(a,b) (a>b)? a:b
#define MIN(a,b) (a<b)? a:b
#include "graphics.h"
#include "math.h"
struct rectangle{
        int xmin;
        int xmax;
        int ymin;
        int ymax;
};
struct point{
        float x;
        float y;};
struct point pot[2];

struct rectangle rect={150,490,100,380};

int x=0,y=0;
void zhongxing(int x,int y,int s)
{ int i;
   for(i=x-5;i<=x+5;i++)
    {   putpixel(i,y,s);}
    for(i=y-5;i<=y+5;i++)
    {   putpixel(x,i,s);
       }
}
void add(int x,int y,int i)
{
pot[i].x=x;
pot[i].y=y;
}
int clip(float q,float d,float *t0,float *t1)
{ float r;
  if(q<0)
  { r=d/q;
    if(r>*t1)
     return(0);
     else if(r>*t0)
     { *t0=r;
       return(1);
       }
      }
     else if(q>0)
     { r=d/q;
    if(r<*t0)
     return(0);
     else if(r<*t1)
     { *t1=r;
       return(1);
       }
      }
     else if(d<0)
     return(0);

     return(1);
 }
void liang(struct point * pot,struct rectangle * rect)
{        float delatx,delaty,t0,t1;
      t0=0;t1=1;
      delatx=pot[1].x-pot[0].x;
      if(clip(-delatx,pot[0].x-rect->xmin,&t0,&t1))
        if(clip(delatx,rect->xmax-pot[0].x,&t0,&t1))
         { delaty=pot[1].y-pot[0].y;
            if(clip(-delaty,pot[0].y-rect->ymin,&t0,&t1))
             if(clip(delaty,rect->ymax-pot[0].y,&t0,&t1))
              {  line((int)(pot[0].x+t0*delatx),(int)(pot[0].y+t0*delaty),
                      (int)(pot[0].x+t1*delatx),(int)(pot[0].y+t1*delaty));
               }
}
}
void main()
{int driver=DETECT,mode; int i=0,j,key;
 registerbgidriver(EGAVGA_driver);
 initgraph(&driver,&mode,"\\tc");
initgraph(&driver,&mode,"\\tc");
 zhongxing(x,y,4);
   setcolor(3);
   rectangle(150,100,490,380);
/**/for(;;)
 { if(bioskey(1))


   { key=bioskey(0);
     if(key==0x4d00)
     {  zhongxing(x,y,0);
       x+=5;
        zhongxing(x,y,4);
      rectangle(150,100,490,380);
     }
    if(key==0x011b)
   {printf("esc be press");
   break;
   }

    if(key==0x4b00)
   {   zhongxing(x,y,0);
       x-=5;
       zhongxing(x,y,4);
     rectangle(150,100,490,380);
    }
    if(key==0x5000)
      {
       zhongxing(x,y,0);
       y+=5;

       zhongxing(x,y,4);
       rectangle(150,100,490,380);
         }
    if(key==0x4800)
      {
        zhongxing(x,y,0);
       y-=5;
       zhongxing(x,y,4);
       rectangle(150,100,490,380);
        }
    if(key==0x1c0d)
     {  add(x,y,i);
        circle(x,y,3);
         i+=1;
          }

     if(key==0x3920)
     {liang(pot,&rect);
        for(j=0;j<2;j++)
        { pot[j].x=0;pot[j].y=0;}
        i=0;
     }
 }
 }
getch();
closegraph();
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -