📄 liangyoud.cpp
字号:
#include "graphics.h"
#include "stdio.h"
#include "conio.h"
int ClipT(float p,float q,float *u1,float *u2)
{
int flag=1;
float r;
if(p<0.0)
{
r=q/p;
if(r>*u2) flag=0;
else if(r>*u1)
*u1=r;
}
else if(p>0.0)
{
r=q/p;
if(r<*u1) flag=0;
else if(r<*u2)
*u2=r;
}
else if(q<0.0) flag=0;
return flag;
}
void LiangLine(int xwmin,int ywmin,int xwmax,int ywmax,int x1,int y1,int x2,int y2)
{
float dx,dy,u1,u2;
u1=0.0;u2=1.0;
dx=x2-x1;
if(ClipT(-dx,x1-xwmin,&u1,&u2))
if(ClipT(dx,xwmax-x1,&u1,&u2))
{
dy=y2-y1;
if(ClipT(-dy,y1-ywmin,&u1,&u2))
if(ClipT(dy,ywmax-y1,&u1,&u2))
{
if(u2<1.0)
{
x2=x1+u2*dx;
y2=y1+u2*dy;
}
if(u1>0.0)
{
x1=x1+u1*dx;
y1=y1+u1*dy;
}
line(x1,y1,x2,y2);
getch();
}
}
}
void main(void)
{
int XL,XR,YB,YT;
int x0,y0,x1,y1;
int gd=DETECT,gm=0;
initgraph(&gd,&gm,"");
cleardevice();
printf("Please input the rectangle point(XL,YT,XR,YB):\n");
scanf("%d%d%d%d",&XL,&YT,&XR,&YB);
setcolor(10);
rectangle(XL,YT,XR,YB);
getch();
printf("Please input the line node(x0,y0,x1,y1):\n");
scanf("%d%d%d%d",&x0,&y0,&x1,&y1);
LiangLine(XL,YT,XR,YB,x0,y0,x1,y1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -