文件名称:
计算机图形学代码PixelWindow
开发工具:
文件大小: 706byte
下载次数: 0
上传时间: 2010-05-20
详细说明: import java.awt.*; import java.applet.Applet; public class Sutherland_Cohen extends Applet{ int xL=100,xR=300,yB=100,yT=400;//设置四个边界 public int code(float x,float y){ int c=0; if(xxR) c=c|2;//在右边,第二位为一 if(yyT) c=c|8;//在上边,第四位为一 return c; } public void sutherland_cohen(Graphics g,float x0,float y0,float x2,float y2){ int c1,c2,c; float x,y,wx,wy; boolean accept=false,done=false; c1=code(x0,y0); c2=code(x2,y2); do { if ((c1|c2)==0)//两个编码都为0,表明在窗口内 { accept=true; done=true; } else if((c1&c2)!=0)done=true;//两个编码的某一位为1,则必然在外侧显然在窗口外 else { c=c1; if(c==0)c=c2;//选一个在外边的点 wx=x2-x0; wy=y2-y0; if ((c&8)==8) {//在上边,求与上边界的交点 x=x0+wx*(yT-y0)/wy; y=yT; } else if ((c&4)==4) {//在下边,求与下边界的交点 x=x0+wx*(yB-y0)/wy; y=yB; } else if ((c&1)==1) {//在左边,求与右边界的交点 y=y0+wy*(xL-x0)/wx; x=xL; }else//即(c&2)==2 {//在右边,求与右边界的交点 y=y0+wx*(xR-x0)/wx; x=xR; } if (c==c1) {//起点不再窗口内,将交点作为新起点 x0=x; y0=y; c1=code(x0,y0); } else {//中点不再窗口内,将交点作为新终点 x2=x; y2=y; c2=code(x2,y2); } }//else } while (done==false); if(accept)g.drawLine((int)x0,(int)y0,(int)x2,(int)y2); } public void paint(Graphics g){ //Graphics2D g2=(Graphics2D)g;//强制转化为Graphics2D 类型的对象 g.setColor(Color.red); //分别画四条边框 g.drawLine((int)xL,(int)yB,(int)xL,(int)yT); g.drawLine((int)xL,(int)yB,(int)xR,(int)yB); g.drawLine((int)xL,(int)yT,(int)xR,(int)yT); g.drawLine((int)xR,(int)yB,(int)xR,(int)yT); g.setColor(Color.blue); g.drawLine(10,10,420,420);//画需要裁减的直线 g.setColor(Color.green); sutherland_cohen(g,10,10,420,420);//调用裁减方法 } } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.