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

📄 liangyoudong.cpp

📁 liangyoudong算法 ,计算机图形学的作业,可以在vc环境下运行
💻 CPP
字号:
#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
  struct rectangle{float xmin;float xmax;float ymin;float ymax;}rect;
      int clipt(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(float x0,float y0,float x1,float y1,rectangle *rect)
	 { float deltax=x1-x0,deltay,t0,t1;
	            t0=0;
				t1=1;
	         	
    	if(clipt(-deltax,x0-rect->xmin,&t0,&t1))
		if(clipt(deltax,rect->xmax-x0,&t0,&t1))
		{  deltay=y1-y0;
     	if(clipt(-deltay,y0-rect->ymin,&t0,&t1))
		 if(clipt(deltay,rect->ymax-y0,&t0,&t1))
		 {cout<<"ok"<<endl;
		line((int)(x0+t0*deltax),(int)(y0+t0*deltay),(int)(x0+t1*deltax),(int)(y0+t1*deltay));//
		return;
		 }
		
		}

	 
       cout<<"p0p1 can't be seen"<<endl;
	 }


 

  
   /*int clipt(float q,float d,float *t0,float *t1);
       void liang(float,float,float,float ,rectangle*);*/
      void main()
{    float x0,y0,x1,y1; 
	  cout<<"請輸入 x0,x1,y0,y1"<<endl;
	   	   cin>>x0>>x1>>y0>>y1;
		   cout<<"請輸入xmin,xmax,ymin,ymax"<<endl;
	   cin>>rect.xmin>>rect.xmax>>rect.ymin>>rect.ymax;
 
	   liang(x0,y0,x1,y1,&rect);
}


	
	

⌨️ 快捷键说明

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