『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

关于MapGIS K9 TDE下绘制正方体的程序一些说明和解释

关于MapGIS K9 TDE下绘制正方体的程序一些说明和解释
如果你看过之前的MapGIS K9三维TDE平台插件开发第一个插件程序(新手入门必看),会发现我在分享一个MapGIS K9 TDE下绘制正方体的程序里面的代码是基于前者的代码改写的,所以这里也不啰嗦了,直接讲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平台中实体的可见与不可见。这里给一个简单的示意图吧:

 

      京ICP备2025132830号-1 京公网安备 号