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

📄 arc.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lintstatic	char sccsid[] = "@(#)arc.c 1.1 92/07/30 SMI"; /* from UCB 4.1 6/27/83 */#endifint del = 20;step(d){	del = d;}arc(x,y,x0,y0,x1,y1){	double pc;	double sqrt();	int flg,m,xc,yc,xs,ys,qs,qf;	float dx,dy,r;	char use;	dx = x-x0;	dy = y-y0;	r = dx*dx+dy*dy;	pc = r;	pc = sqrt(pc);	flg = pc/4;	if(flg == 0)step(1);	else if(flg < del)step(flg);	xc = xs = x0;	yc = ys = y0;	move(xs,ys);	if(x0 == x1 && y0 == y1)flg=0;	else flg=1;	qs = quad(x,y,x0,y0);	qf = quad(x,y,x1,y1);	if(abs(x-x1) < abs(y-y1)){		use = 'x';		if(qs == 2 || qs ==3)m = -1;		else m=1;	}	else {		use = 'y';		if(qs > 2)m= -1;		else m= 1;	}	while(1){		switch(use){		case 'x':				if(qs == 2 || qs == 3)yc -= del;			else yc += del;			dy = yc-y;			pc = r-dy*dy;			xc = m*sqrt(pc)+x;			if((x < xs && x >= xc) || ( x > xs && x <= xc) ||			    (y < ys && y >= yc) || ( y > ys && y <=  yc) )			{				if(++qs > 4)qs=1;				if(qs == 2 || qs == 3)m= -1;				else m=1;				flg=1;			}			cont(xc,yc);			xs = xc; 			ys = yc;			if(qs == qf && flg == 1)				switch(qf){				case 3:				case 4:						if(xs >= x1)return;					continue;				case 1:				case 2:					if(xs <= x1)return;				}			continue;		case 'y':				if(qs > 2)xc += del;			else xc -= del;			dx = xc-x;			pc = r-dx*dx;			yc = m*sqrt(pc)+y;			if((x < xs && x >= xc) || ( x > xs && x <= xc ) ||			    (y < ys && y >= yc) || (y > ys && y <= yc) )			{				if(++qs > 4)qs=1;				if(qs > 2)m = -1;				else m = 1;				flg=1;			}			cont(xc,yc);			xs = xc; 			ys = yc;			if(qs == qf && flg == 1)				switch(qs){				case 1:				case 4:					if(ys >= y1)return;					continue;				case 2:				case 3:					if(ys <= y1)return;				}		}	}}quad(x,y,xp,yp){	if(x < xp)		if(y <= yp)return(1);		else return(4);	else if(x > xp)		if(y < yp)return(2);		else return(3);	else if(y < yp)return(2);	else return(4);}abs(a){	if(a < 0)return(-a);	return(a);}

⌨️ 快捷键说明

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