欢迎来到天天文库
浏览记录
ID:8831346
大小:135.50 KB
页数:15页
时间:2018-04-08
《用户坐标、视图坐标、javaawt坐标概念的建立和应用》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验1实验报告格式《计算机图形学》实验1实验报告实验题目:用户坐标、视图坐标、Javaawt坐标概念的建立和应用实验内容:掌握用户坐标、视图坐标、Javaawt坐标概念,掌握三类坐标的转换算法。编写自己的算法函数,并形成Java语言程序包。编写程序调用验证之。参考程序:有两个示范程序MyCanvas.java和MyLineDrawApplet.java基本概念:用户坐标:是独立于设备的逻辑坐标,可以是用户用来定义设计对象的各种坐标。视图坐标:是设备相关的坐标,随目标渲染设备不同而不同。Java awt坐标:使用java.awt时的坐标。填充:以已知的某一
2、条线为基准,向周围区域扩展像素,然后对这些像素所在的位置进行着色。 将用户坐标转换为视图坐标实际上是将用户自己设计的逻辑坐标转换为设备相关的坐标,将视图坐标转化为AWT坐标就是将视图坐标按照显示窗口的大小进行缩放。算法设计:功能:用户可根据自己输入的用户坐标,进行视图坐标与awt坐标之间的转换,反向的转换原理与正向相同。此外,该程序还可以进行图形的绘制和填充,如矩形,椭圆等图形。算法1:用户坐标向视图坐标的转换设userMinx、userMaxx分别为用户坐标系x轴的最小值与最大值,userMiny、userMaxy分别为用户坐标系y轴的最小值与最大值;
3、viewMinx、viewMaxx分别为视图坐标系x轴的最小值与最大值,viewMiny、viewMaxy分别为视图坐标系y轴的最小值与最大值。若令(userX,userY)为要转换的用户坐标,(viewX,viewY)为转换后的视图坐标。则它们之间的转换关系为:viewX=viewMinx+(userX-userMinx)/(userMaxx-userMinx)*(viewMaxx-viewMinx);viewY=viewMiny+(userY-userMiny)/(userMaxy-userMiny)*(viewMaxy-viewMiny);算法1实
4、现如下:publicdoubleviewX(doubleuserX){//x坐标的转换doubles=(userX-userMinx)/(userMaxx-userMinx);doublet=viewMinx+s*(viewMaxx-viewMinx);//坐标的平移及压缩returnt;}publicdoubleviewY(doubleuserY){//y坐标的转换doubles=(y-userMiny)/(userMaxy-userMiny);doublet=viewMiny+s*(viewMaxy-viewMiny);//坐标的平移及压缩retur
5、nt;}算法2:视图坐标向awt坐标的转换若令(viewX,viewY)为视图坐标,(x,y)为awt坐标,width、height分别为窗口的宽度和高度,则它们之间的转换关系为:X=viewX*width;Y=viewY*height;算法2实现如下://将视图坐标系的点转换到JavaAWT坐标publicintgetIntX(doubleviewX){return(int)(windowWidth*viewX);//注意视图坐标0-1之间}publicintgetIntY(doubleviewY){return(int)(windowHeight*(
6、1-viewY));//Y轴方向相反}算法3:绘制矩形首先将传入的用户坐标转换为awt坐标,通过对传入的坐标比较,找出矩形左上角坐标(ix0,iy0),并求出矩形的宽度width和高度height,利用Graphics类的方法drawRect(ix0,iy0,width,height)可画出矩形。算法3实现如下:publicvoiddrawRect(doublex1,doubley1,doublex2,doubley2){//从用户的点坐标转换到JavaAWT坐标intix1=getX(x1);intiy1=getY(y1);intix2=getX(x2
7、);intiy2=getY(y2);intix0=(ix18、的转换//用户坐标系的二维图形的描画方法,等//用编译命令javac-d.MyC
8、的转换//用户坐标系的二维图形的描画方法,等//用编译命令javac-d.MyC
此文档下载收益归作者所有