关于MapGIS K9 TDE下绘制正方体的程序一些说明和解释
如果你看过之前的MapGIS K9三维TDE平台插件开发第一个插件程序(新手入门必看),会发现我在分享一个MapGIS K9 TDE下绘制正方体的程序里面的代码是基于前者的代码改写的,所以这里也不啰嗦了,直接讲MapGIS K9 TDE下绘制正方体的代码实现。
其实绘制的代码是这个函数完成的:
void RecTangle::buildRec(Real Cir, Real zmin, Real zmax, const Vector3& offset, ColourValue col, SuperMesh& superMesh) { SingleMesh *temMesh=superMesh.createSingleMesh("mesh"); //创建正方体 //创建8个点 temMesh->positionArray.Add(offset+getPoint(Radian(Degree(45)),Cir,zmin)); temMesh->positionArray.Add(offset+getPoint(Radian(Degree(45)),Cir,zmax)); temMesh->positionArray.Add(offset+getPoint(Radian(Degree(135)),Cir,zmin)); temMesh->positionArray.Add(offset+getPoint(Radian(Degree(135)),Cir,zmax)); temMesh->positionArray.Add(offset+getPoint(Radian(Degree(225)),Cir,zmin)); temMesh->positionArray.Add(offset+getPoint(Radian(Degree(225)),Cir,zmax)); temMesh->positionArray.Add(offset+getPoint(Radian(Degree(-45)),Cir,zmin)); temMesh->positionArray.Add(offset+getPoint(Radian(Degree(-45)),Cir,zmax)); //temMesh->normalArray.Add()//将点连起来形成面 temMesh->triangleArray.Add(equal(3,1,0)); temMesh->triangleArray.Add(equal(0,2,3)); temMesh->triangleArray.Add(equal(0,1,7)); temMesh->triangleArray.Add(equal(7,6,0)); temMesh->triangleArray.Add(equal(2,0,6)); temMesh->triangleArray.Add(equal(6,4,2)); temMesh->triangleArray.Add(equal(5,3,2)); temMesh->triangleArray.Add(equal(2,4,5)); temMesh->triangleArray.Add(equal(5,4,6)); temMesh->triangleArray.Add(equal(6,7,5)); temMesh->triangleArray.Add(equal(5,1,3)); temMesh->triangleArray.Add(equal(5,7,1)); temMesh->operationType=RenderOperation::OT_TRIANGLE_LIST;// temMesh->materialName="mydeom";
}
其实这个demo是我参考MapGIS K9三维TDE平台实现动态光标效果里面的demo写成的,所以当时在没有注释的情况下,我看的那个demo也是稀里糊涂的,不过后来略微看懂了一二,于是就有了上篇文章的demo,这里我也稍微解释下,解释的不好,还请见谅
关于创建的8个点,众所周知,正方体有8的顶点(小编白痴了),所以在平面直角坐标系的基础上绘制一个正方形,这个正方形的在Z轴的高度是一致的。同时在这个正方形的正上方绘制一个一模一样的正方形,这样就形成了一个正方体。下面是一张简易的示意图。
PS:注意,这里面的点的序号并不是我规定的,而是根据你建立的顺序而定的,MapGIS K9三维TDE平台会根据你建立的顺序自动给点编号,默认从0开始编号。
关于后面的将点连接成面的代码,这里要提醒的就是关于面的可见与不可见,我在之前的文章中已经讲过,可以看MapGIS K9 三维TDE平台中实体的可见与不可见。这里给一个简单的示意图吧:
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。