已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
三维视图绘制与消隐技术.txt25爱是一盏灯,黑暗中照亮前行的远方;爱是一首诗,冰冷中温暖渴求的心房;爱是夏日的风,是冬日的阳,是春日的雨,是秋日的果。地理信息系统论坛(GIS Forum)-学术论文 论坛BBS 学术论文 技术资料 文件格式 GIS标准化 共享软件 GIS链接 三维视图绘制与消隐技术作者:周坚华1. 问题的提出在一些数据库管理系统或办公自动化和统计类软件中,一般具有绘制三维视图的功能。使用时通常要求在给出的表格中输入绘图的数据及视角、比例尺等参数。这只适用于小批量的统计数据绘制统计三维视图。在地质、地貌、气象、水文、交通、林业等许多领域,需要描述的某一量通常具有空间分布特征,这种空间分布数据的数量一般十分庞大,当使用上述三维视图软件绘图时经常会遇到输数表格容纳不下的问题,而且按表格重新输入数据也容易出错和耗费许多人力。三维视图的绘制及相应绘图数据的组织并不是一件十分困难的事,使用少量程序代码就可以实现这一目标。本文将介绍一种以C语言实现大批量数据绘制三维视图的简易方法。该法的关键技术在于:(1)以FoxPro数据库管理系统整理绘图数据并制成可为C语言包括和调用的.h文件;(2)在绘制三维视图中,以“多边形法”进行需遮蔽线段的消隐。2. 绘图数据的准备绘图的原始数据来自FoxPro(或FoxBase)数据库管理系统。可以将某幅图的数据置于一个一维数组中,并包括在一个.h文件中。这样只要在C的绘三维视图程序首包括该头文件,就可以在程序的任何位置调用这些数据。例如有一个数据串:3,8,10,11,27,6,设存放数组为A,数据文件名为data.h,在data.h中,该数据串的存放形式为:A 3, 8, 10, 11, 27, 6, : :;这些数据可由FoxPro的.dbf文件拷贝得到。当然,在拷贝前还需经过简单的加工。设在.dbf文件中,待绘图数据所在的字段为DT1,此时可增设一个字段DH(逗号),并将该字段的内容全以“,”替换,然后以如下命令拷贝到data.h文件中: copy to data.h field DT1,DH dele with blank 随后打开data.h文件,在数据首加上“A=”,在数据尾加上“ ;”即可。3. 绘三维视图编程基本思想绘三维视图的关键技术在“消隐”,即消去在三维观察时应该被挡住看不见的线。在有关“计算机图形学”的书籍中所介绍的消隐法多为“计算法”,即由当前数据点行计算在已绘出的线条中哪些应该隐去,再清除这些线条。笔者自己设计了一种简便新颖的消隐法(这里姑且称之为“多边形法”),不仅程序代码简单,而且这种消隐法的原理也十分简洁明了。现将其基本思想及运算步骤介绍如下:3.1 首排数据绘X方向网线。以line函数将首排数据点连线;3.2 绘Y方向网线。将第2排与第1排在Y方向相对应的数据点连线;3.3 以“多边形法”做消隐。据第2排点的数据以背景色涂刷一个多边形,这样,可能被第2排数据点连线所遮蔽的线条(即应消隐的线)即被擦除;3.4 第2排数据绘X方向网线。以line函数将第2排数据点连线;3.5 重复步骤3.23.4,直至绘完全图。 4. 绘三维视图源程序(for Windows)draw3d.cpp#include #include data.hint PASCAL WinMain (HANDLE, HANDLE, LPSTR, int);long FAR PASCAL WindowProc (HWND, WORD, WORD, LONG);int mv15625; / mv 为绘图数据数组,存于data.h中HANDLE hInst;int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance,LPSTR lpszCmdLine, int nCmdShow) /此处略去了创建窗口的代码块long FAR PASCAL WindowProc (HWND hWnd, WORD message,WORD wParam, LONG lParam)HDC hDC;PAINTSTRUCT ps;HBRUSH hOldBrush;int i=0,j=0;int yyMAXPTS; /MAXPTS为绘图行或列数,在data.h中定义static POINT PointTableMAXPTS+2;switch (message) / 定义画笔或画刷static LOGPEN lpBlack=PS_SOLID,1,1,RGB(0,0,0);static LOGPEN lpGreen=PS_SOLID,1,1,RGB(0,255,0);static LOGPEN lpWhite=PS_SOLID,1,1,RGB(255,255,255);HBRUSH hBlackBrush;HBRUSH hWhiteBrush;HPEN hGreenPen;HPEN hWhitePen;HDC hDC;PAINTSTRUCT PtStr;LoadString (hInst, IDS_CAPTION, szCaption, 35);return 0;case WM_PAINT:hDC = BeginPaint (hWnd, &PtStr);SetMapMode(hDC,MM_TEXT);hBlackPen=CreatePenIndirect(&lpBlack);hGreenPen=CreatePenIndirect(&lpGreen);hWhitePen=CreatePenIndirect(&lpWhite);hBlackBrush=GetStockObject(BLACK_BRUSH);hWhiteBrush=GetStockObject(WHITE_BRUSH);hOldBrush = SelectObject (hDC,GetStockObject (NULL_BRUSH);yyj=MOVE+j*SCALE1; /MOVE为绘图起始点Y坐标,在data.h中定义for(i=0;i PointTablei.x=i*SCALE2+j*SCALE4; / 形成多边形顶点数组PointTablei.y=yyj-(PointTablei.x-PointTable0.x)*ANGLE-(mvj*MAXPTS+i*SCALE3); /SCALE2和SCALE4分别为X和Y方向的缩放系数if(j0) /SCALE3为绘图数据(Z方向)的缩放系数 /ANGLE为视角,均在data.h中定义SelectObject(hDC,hGreenPen);MoveTo(hDC,mxi,myi);LineTo(hDC,PointTablei.x,PointTablei.y); / 绘 y 方 向 网 线PointTableMAXPTS.x=PointTableMAXPTS-1.x;PointTableMAXPTS.y=PointTableMAXPTS-1.y+20;PointTableMAXPTS+1.x=PointTable0.x;PointTableMAXPTS+1.y=PointTable0.y+20;if(j=(MAXPTS-1)SelectObject(hDC,hWhitePen);SelectObject(hDC,hWhiteBrush);Polygon(hDC,PointTable,MAXPTS); / 消 隐elseSelectObject(hDC,hBlackPen);SelectObject(hDC,hBlackBrush);Polygon(hDC,PointTable,MAXPTS); / 消 隐for(i=0;i mxi=PointTablei.x; /将前排点数据存于mxi myi,myi=PointTablei.y; / 留待绘y方向网线for(i=0;i(MAXPTS-1);i+)SelectObject(hDC,hGreenPen);MoveTo(hDC,PointTablei.x,PointTablei.y);LineTo(hDC,PointTablei+1.x,PointTablei+1.y);/ 绘 x方向网线SelectObject (hDC, hOldBrush);EndPaint (hWnd, &PtStr);return 0;case WM_DESTROY:ostQuitMessage (0);return 0;default:break;return DefWindowProc (hWnd, message, wParam, lParam);5.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025重庆三峡学院招聘4人笔试考试参考试题及答案解析
- 广汉市事业单位 2025年公开考核招聘工作人员考试笔试备考试题及答案解析
- 2025山东滨州平安综合金融招聘社区金融专员16人笔试考试参考题库及答案解析
- 2025广西崇左扶绥县事业单位竞争性选聘工作人员29人笔试考试备考题库及答案解析
- 2025年中国科学技术大学研究生院劳务派遣岗位招聘1人考试笔试备考试题及答案解析
- 2025-2026湖北武汉市长江河湖建设有限公司招聘4人笔试考试备考题库及答案解析
- 2025中国融通医疗临夏七医院社会招聘2人笔试考试备考题库及答案解析
- 实景地理信息采集员安全培训强化考核试卷含答案
- 民族拉弦弹拨乐器制作工岗前技能掌握考核试卷含答案
- 中央空调清洗工冲突解决模拟考核试卷含答案
- DB32-T 4353-2022 房屋建筑和市政基础设施工程档案资料管理规程
- 制造企业能源管理系统建设方案
- 脑出血知识培训课件
- (正式版)DB63∕T 2437-2025 《大型并网光伏电站退役太阳电池组件延期使用或降级再利用的判定与要求》
- 2025年消费者购买力对新能源汽车市场发展影响可行性研究报告
- 领导干部任前法律法规知识考试题库及答案(2025年)
- 全国大学生职业规划大赛《汽车制造与试验技术》专业生涯发展展示【高职(专科)】
- 乡镇档案工作办法课件
- 索尼相机DSC-HX300 中文说明书
- 卫生院关于成立消除艾滋病、梅毒、乙肝母婴传播领导小组及职责分工的通知
- 2025年中职实习指导教师资格证面试策略与模拟题详解教程
评论
0/150
提交评论