第三章 图 形 对 象

第三章 图 形 对 象

ID:20517887

大小:2.00 MB

页数:19页

时间:2018-10-09

第三章   图  形  对  象_第1页
第三章   图  形  对  象_第2页
第三章   图  形  对  象_第3页
第三章   图  形  对  象_第4页
第三章   图  形  对  象_第5页
资源描述:

《第三章 图 形 对 象》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第三章图形对象即使人们不知道苹果和梨是怎么种植的,也可以吃掉它们。那么能否不必知道构造细节,也可以绘制出复杂的图形呢?可以,图形对象就干这种事情。Intra3D的图形对象隐藏了几何造型与绘制的细节,用户使用简单的几个接口函数就可以绘制出图形。Intra3D2.0版提供了三类图形对象:(1)常用几何对象,如长方体、锥体、圆柱体、球体、圆环体、Swept形体等对象;(2)多边形模型对象,用于绘制Autodesk公司.3ds模型和Wavefront公司的.obj模型;(3)商业统计图形对象,如柱形图、带状图、条形图、折线图、面积图、饼图、塔形图、曲线图、曲面图

2、、进程图、股票图等对象。Intra3D将“图形对象”和“形体节点”(见第四章)分层设计。图形对象负责绘制,形体节点则处理3D交互。形体节点可以动态地引用图形对象,从而实现交互式绘制。这种分层设计可使Intra3D核心库具有良好的可扩展性,并使交互式3D应用程序的开发更加灵活。3.1图形对象的基类与COM接口图形对象的基类为GraphicalObject,相应的COM接口为IGraphicalObject。在C++类库中,几何图形对象如BoxObject、ConeObject、CylinderObject、SphereObject与TorusObject,

3、多边形模型对象如Model3DS与ModelOBJ,商业统计图形对象如ColumnChart3D、RibbonChart3D、LineChart2D与BartChar2D等,均为GraphicalObject的派生类。在COM库中,上述对象均继承接口IGraphicalObject。C++类库中GraphicalObject是Container的派生类,应使用AddRef与Release函数来管理内存。源程序见Intra3D-DLLIncludeLayer2GraphicalObject.h。其定义如下:classGraphicalObject:p

4、ublicContainer{public:virtualvoidDraw(void){}//图形绘制函数//获取对象的包围盒,(dx,dy,dz)为长方体的幅值,(cx,cy,cz)为中心坐标,virtualvoidGetBoundBox(float*dx,float*dy,float*dz,float*cx,float*cy,float*cz){*dx=*dy=*dz=0;*cx=*cy=*cz=0;}//获取对象的包围球,(cx,cy,cz)为中心坐标,radius为半径virtualvoidGetBoundSphere(float*radius,

5、float*cx,float*cy,float*cz){*cx=*cy=*cz=0;*radius=0;}//获取对象的最小坐标值(minx,miny,minz)与最大坐标值(maxx,maxy,maxz)virtualvoidGetMinMax(float*minx,float*miny,float*minz,float*maxx,float*maxy,float*maxz){*minx=*miny=*minz=-0;*maxx=*maxy=*maxz=0;}64};其中公有函数Draw、GetBoundBox、GetBoundSphere与GetMi

6、nMax均为虚函数,具体行为由派生类定义。COM接口IGraphicalObject的定义如下(见Intra3D-COMIntra3D.idl文件):interfaceIGraphicalObject:IDispatch{HRESULTDraw();HRESULTGetMinMax([out]float*minX,[out]float*minY,[out]float*minZ,[out]float*maxX,[out]float*maxY,[out]float*maxZ);HRESULTGetBoundSphere([out]float*radius,

7、[out]float*cx,[out]float*cy,[out]float*cz);HRESULTGetBoundBox([out]float*dx,[out]float*dy,[out]float*dz,[out]float*cx,[out]float*cy,[out]float*cz);};3.2常用几何图形对象Intra3D2.0C++类库与COM库中的常用几何图形对象有BoxObject、ConeObject、CylinderObject、SphereObject与TorusObject。由于这几种图形对象的设计非常相似,本节仅以SphereO

8、bject为例讲述程序设计。程序的重点是AddRef、Release与Final

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。