关于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平台中实体的可见与不可见。这里给一个简单的示意图吧:

分享一个MapGIS K9 TDE下绘制正方体的程序 关于MapGIS K9 TDE中RenderOperation的一点说明

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论