欢迎来到天天文库
浏览记录
ID:1890744
大小:135.50 KB
页数:0页
时间:2017-11-13
《用户坐标、视图坐标、java awt坐标概念的建立和应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验1实验报告格式《计算机图形学》实验1实验报告实验题目:用户坐标、视图坐标、Javaawt坐标概念的建立和应用实验内容:掌握用户坐标、视图坐标、Javaawt坐标概念,掌握三类坐标的转换算法。编写自己的算法函数,并形成Java语言程序包。编写程序调用验证之。参考程序:有两个示范程序MyCanvas.java和MyLineDrawApplet.java基本概念:用户坐标:是独立于设备的逻辑坐标,可以是用户用来定义设计对象的各种坐标。视图坐标:是设备相关的坐标,随目标渲染设备不同而不同。Java awt坐标:使用java.awt时的坐标。填充:以已知的某一条线为基准,向
2、周围区域扩展像素,然后对这些像素所在的位置进行着色。 将用户坐标转换为视图坐标实际上是将用户自己设计的逻辑坐标转换为设备相关的坐标,将视图坐标转化为AWT坐标就是将视图坐标按照显示窗口的大小进行缩放。算法设计:功能:用户可根据自己输入的用户坐标,进行视图坐标与awt坐标之间的转换,反向的转换原理与正向相同。此外,该程序还可以进行图形的绘制和填充,如矩形,椭圆等图形。算法1:用户坐标向视图坐标的转换设userMinx、userMaxx分别为用户坐标系x轴的最小值与最大值,userMiny、userMaxy分别为用户坐标系y轴的最小值与最大值;viewMinx、viewM
3、axx分别为视图坐标系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实现如下:publicdoubleviewX
4、(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);//坐标的平移及压缩returnt;}算法2:视图坐标向awt坐标的转换若令(view
5、X,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*(1-viewY));//Y轴方向相反}算法3:绘制矩形首先将传入的用户
6、坐标转换为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);intiy2=getY(y2);intix0=(ix17、;//矩形左上角坐标intiy0=(iy1
7、;//矩形左上角坐标intiy0=(iy1
此文档下载收益归作者所有