三维视图绘制与消隐技术

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.2~3.4,直至绘完全图。

时间: 2024-10-24 17:23:14

三维视图绘制与消隐技术的相关文章

webGL+threejs制作web三维视图入门教程

这是一篇的webGL+threejs构建web三维视图的入门教程,可以了解到利用threejs创建简单的三维图形,并且控制图形运动. 一.创建场景 我们所见的视图由两个部分共同创建,scene和camera.首先定义一个场景:var scene = new THREE.Scene();然后定义一个相机:var camera = new THREE.PerspectiveCamera( 90, width/height, 0.1, 1000 );等等,定义相机需要视窗的长宽.现在我要让我的绘图显示

Functy 0.24发布 三维图形绘制工具

Functy 是一个三维图形绘制工具包.主要功能是针对直角坐标和球面函数快速方便地绘制和修改,为了促进3D功能的乐趣探索. Functy 0.24该版本增加了一个新的功能允许定义参数曲线的圆柱坐标的横截面曲线.完全使用CPU或GPU着色器,可以完成所有的功能类型.每像素光照计算使用派生的正常功能(而不是插值法线).可用于Windows和Linux,并作为一个新的ARM与Raspberry PI使用的http://www.aliyun.com/zixun/aggregation/33836.htm

数据信息视图:用户定向技术创造个性化网站体验

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 下图是一张不错的信息视图,讲解了基于用户细分的定向技术所带来的好处 居然用户都不一样,为什么要提供一样的东西呢? 点击查看大图

Apache Geronimo和Spring框架,第6部分:Spring MVC:使用Web视图技术

简介:本教程是系列教程(共六部分)的最后一部分,向您展示了如何利用 Spring 框架来使用 JavaServer Page(JSP).Velocity.Tile 和 PDF 导出功能.您将用 Model-View-Controller (MVC)中的 V 做试验,即 Spring MVC 中内置的各种 Web 视图.通过对 Spring MVC 所支持的各种视 图技术的全面介绍,您将看到在整个系列教程中构建的样例电话本应用程序中实现这些技术有多么轻松. 开始之前 本系列教程适合于需要了解 Sp

UML技术_基础技术(0001)_常用UML绘制工具

UML技术_基础技术(0001)_常用UML绘制工具 基础技术: 本文介绍三种不同场合下最为常用的工具: 1.rational rose 专业级的工具,支持各种可视化建模,以及代码.结构的生成,包括数据库等等,而且拥有版本控制等功能,可以多人设计. 由于功能太多太全,产品过重,用起来不是很方便,一般国内项目慎重使用.而且收费! 下载地址:点击打开链接(这么大的东西还是放到新浪网盘上吧,百度网盘好用,但是容量太小) 2.starUML 轻量级的工具,不用安装,放到移动存储就可以用,移植也很方便.功

Android自定义视图二:如何绘制内容

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三:给自定义视图添加"流畅"的动画 Android自定义视图四:定制onMeasure强制显示为方形 有的时候自持扩展一个标准的Android视图是不够的.你需要在视图上绘制你自己的内容才行.本文将会讲述如何使用Canvas类来绘制一个折线图,并会讲述如何处理尺寸和padding. 如果你还没

三维互联网技术应用孵化平台"上线仪式暨新闻发布会

秦皇岛经济开发区召开"三维互联网技术应用孵化平台"上线仪式暨新闻发布会,秦皇岛经济技术开发区与IBM 战略合作协议的首个项目,即由IBM中国研究院向秦皇岛开发区提供IBM全球8家研究院历时4年共同研发,包含15项国际专利技术的"三维互联网技术应用孵化平台"上线开通. 在2010年5·18廊坊国际经贸洽谈会期间签署,秦皇岛经济开发区管委会与IBM决定合作成立秦皇岛数据产业研究院,由开发区管委投资.IBM中国研究院提供技术.燕大软件中心负责管理运营,这在国内尚属首家.

浮动窗体中的OpenGL多视图的实现

由于在工作中需要结合浮动窗体实现OpenGL的多视图,用于得到三维实体的三视图观察效果,通过参考其它资料,设计了一个程序框架,在此基础之上大家可以根据自己的需要进行扩充,实现需要的功能. 本程序中浮动窗体的实现从以下网站得到支持:www.datamekanix.com 程序实现效果图 关键技术实现介绍: 一.OpenGL多视图的实现 平常我们的程序大部分都是建立一OpenGL设备上下文,但在本程序中,由于要实现三维实体的多视图观察功能,因此,需要建立多OpenGL设备上下文,并在需要的时候进行切

《影视特效镜头跟踪技术精粹(第2版)》——1.2 一次典型的运动匹配

1.2 一次典型的运动匹配 一次典型的运动匹配,包括对摄影机运动的解算和环境特征的再现两个部分.解算出摄影机的运动,可以使CG元素与画面的运动相匹配:而重建3D环境特征则有助于将CG元素放置到场景中合适的位置.静帧的透视匹配,使用独立的运动匹配软件对运动的镜头进行解算都属于此类. 为了更好的解释运动匹配的内容,我先引入一个代表性的例子.如图1.2.1所示,这是电视剧<大工匠>中的一个视效镜头.导演需要一个冬日大雪的场景,但是因为拍摄时间的限制,不可能无限期地等待下雪的日子,人工造雪也有难度,因