欢迎来到天天文库
浏览记录
ID:20445335
大小:219.76 KB
页数:10页
时间:2018-10-13
《osg多边形的填充实验二》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、天津理工大学计算机科学与技术学院实验报告2015至2016学年第二学期课程名称计算机图形学学号学生姓名年级专业课程号实验地点实验时间主讲教师辅导教师实验(二)实验名称多边形的填充软件环境VisualStudio2010OSG-3.1.0Windows7硬件环境2G内存显卡GT610CPU奔腾双核硬盘320G实验目的1.掌握扫描线填充算法基本原理2.掌握任意多边形的绘制方法3.掌握由多边形构建多面体技术4.掌握交互式OpenSceneGraph程序设计实验内容(应包括实验题目、实验要求、实验任务等)实验题目:1.随机产生地形高度数据。2.实现地形数据存储。3.地形数据网格化
2、。4.地形颜色由高度决定。5.渲染地形实验要求:1.设计结构合理、扩展灵活。2.每个设备类独立封装。3.提交电子版实验报告及工程代码,试验报告模板可参考计算机学院统一模板4.提交的工程代码必须删除其中的Debug或Release文件夹实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)节点模型:实验步骤:1.在纸上绘制草图,建立三维坐标系,并在坐标系屮确定地形面积以及峰点的稠密,行列数;2.创建Group节点,Geode节点,Geomotry节点;3.设置不同点的高度值,通过产生随机数确定每个点的高度;4.创建各顶点的颜色值,颜色由高度来决定,通过高度的不同
3、实现渐变;5.实现山峰体的绘制。6.实验结果附录(可包括源程序清单或其它说明)源代码:#include#include#include#includc#include#include#include#include#includc#include4、tor>#include^include〈osg/PositionAttitudeTransform>#include#include^defineMIN0//随机数产生的范围SdefineMAX1osg::Group*createLight2(osg::Node*);classUscEvcntHandlcr:publicosgGA::GUIEvcntHandlcrprivate:floatangle;floatmove;floatscale;public:UseEventHandler(){angle=0;5、move=0;scale=l;}virtualboolhandle(constosgGA::GUIEventAdapterfeea,osgGA::GUIActionAdapterfeaa){osgVicwcr::Viewer氺viewer=dynamic_castroot=dynamic_cast(viewer->getSceneData());if(!root)6、returnfalse;switch(ea.getEventType()){caseosgGA::GUIEventAdapter::KEYDOWN:{if(ea.getKey()==’w’){angle+=osg::PI2/90;root->setMatrix(osg::Matrix::translate(-5,-5,0)氺osg::Matrix::rotate(angle,osg::Vec3(0,0,l)*osg::Matrix::translate(5,5,0)));}elseif(ea.getKey0二=’s’){angle-=osg::PI_2/90;root->7、setMatrix(osg::Matrix::translate(-5,-5,0)氺osg::Matrix::rotate(angle,osg::Vec3(0,0,1)*osg::Matrix::translate(5,5,0)));}elseif(ea.getKey()=='q')scale+=0.1;root->setMatrix(osg::Matrix::scale(scale,scale,scale));}elseif(ea.getKey0二=’a’){scale-=0.1;root->setMatrix(osg::M
4、tor>#include^include〈osg/PositionAttitudeTransform>#include#include^defineMIN0//随机数产生的范围SdefineMAX1osg::Group*createLight2(osg::Node*);classUscEvcntHandlcr:publicosgGA::GUIEvcntHandlcrprivate:floatangle;floatmove;floatscale;public:UseEventHandler(){angle=0;
5、move=0;scale=l;}virtualboolhandle(constosgGA::GUIEventAdapterfeea,osgGA::GUIActionAdapterfeaa){osgVicwcr::Viewer氺viewer=dynamic_castroot=dynamic_cast(viewer->getSceneData());if(!root)
6、returnfalse;switch(ea.getEventType()){caseosgGA::GUIEventAdapter::KEYDOWN:{if(ea.getKey()==’w’){angle+=osg::PI2/90;root->setMatrix(osg::Matrix::translate(-5,-5,0)氺osg::Matrix::rotate(angle,osg::Vec3(0,0,l)*osg::Matrix::translate(5,5,0)));}elseif(ea.getKey0二=’s’){angle-=osg::PI_2/90;root->
7、setMatrix(osg::Matrix::translate(-5,-5,0)氺osg::Matrix::rotate(angle,osg::Vec3(0,0,1)*osg::Matrix::translate(5,5,0)));}elseif(ea.getKey()=='q')scale+=0.1;root->setMatrix(osg::Matrix::scale(scale,scale,scale));}elseif(ea.getKey0二=’a’){scale-=0.1;root->setMatrix(osg::M
此文档下载收益归作者所有