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

📄 l.c

📁 梁友栋-Barskey裁剪算法,在裁剪算法中比较快的一种算法,
💻 C
字号:
#include <graphics.h>
#include <stdio.h>
#include <dos.h>
#include <math.h>
 typedef   enum   bool
  {      false=0,
	 true=1
  }Bool;
Bool ClipT();
void LB_Line( x1,y1,x2,y2,XL,XR,YB,YT)
float x1,y1,x2,y2,XL,XR,YB,YT;
{
	float dx,dy,u1,u2;
	u1=0;u2=1;
	dx=x2-x1;
	dy=y2-y1;
	if(ClipT(-dx,x1-XL,&u1,&u2))
	 if(ClipT(dx,XR-x1,&u1,&u2))
	  if(ClipT(-dy,y1-YB,&u1,&u2))
	   if(ClipT(dy,YT-y1,&u1,&u2))
		{ setcolor(4);
		 line(x1+u1*dx,y1+u1*dy,x1+u2*dx,y1+u2*dy);
		 return;
		}
}
Bool ClipT(p,q,u1,u2)
float p,q,*u1,*u2;
{
	float r;
	if(p<0)
	{
	   r=q/p;
	   if(r>*u2) return false;
	   else if(r>*u1)
	   {
		   *u1=r;
		   return true;
	   }
	}
     else if(p>0)
	{
	 r=p/q;
	 if(r<*u1) return false;
	 else if(r<*u2)
	{

	    *u2=r;
	    return true;
	}
	}
else if(q<0) return false;
return true;
}
main()
{
   int gdriver=DETECT,gmode;       
   initgraph(&gdriver,&gmode,"c:\turboc2");     /*EGAVGA.BGI文件      */
   LB_Line(20.0,30.0,200.0,400.0,45.0,400.0,15.0,200.0);
   getch();
   closegraph();
   return 0;
}

⌨️ 快捷键说明

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