zoukankan      html  css  js  c++  java
  • osg绘制ifc工字钢的端面

    osg::Geode* createIfcPolygon2()
    {
        osg::Geode* geode = new osg::Geode();
    
    
        //face 8
        {
            osg::Geometry* geom_face1 = new osg::Geometry();
            osg::Vec3Array* coords_face1 = new osg::Vec3Array();
            geom_face1->setVertexArray(coords_face1);
    
            std::vector<osg::Vec3> point_vecs_bottom;
            {
                osg::Vec3 indexVecB_1;
                indexVecB_1[0] = 7700.0f;
                indexVecB_1[1] = 70.0f;
                indexVecB_1[2] = -130.0f;
    
    
                osg::Vec3 indexVecB_2;
                indexVecB_2[0] = 7700.0f;
                indexVecB_2[1] = 70.0f;
                indexVecB_2[2] = 130.0f;
    
                osg::Vec3 indexVecB_3;
                indexVecB_3[0] = 7700.0f;
                indexVecB_3[1] = 150.0f;
                indexVecB_3[2] = 130.0f;
    
                osg::Vec3 indexVecB_4;
                indexVecB_4[0] = 7700.0f;
                indexVecB_4[1] = 150.0f;
                indexVecB_4[2] = 150.0f;
    
                osg::Vec3 indexVecB_5;
                indexVecB_5[0] = 7700.0f;
                indexVecB_5[1] = -150.0f;
                indexVecB_5[2] = 150.0f;
    
                osg::Vec3 indexVecB_6;
                indexVecB_6[0] = 7700.0f;
                indexVecB_6[1] = -150.0f;
                indexVecB_6[2] = 130.0f;
    
                osg::Vec3 indexVecB_7;
                indexVecB_7[0] = 7700.0f;
                indexVecB_7[1] = -70.0f;
                indexVecB_7[2] = 130.0f;
    
                osg::Vec3 indexVecB_8;
                indexVecB_8[0] = 7700.0f;
                indexVecB_8[1] = -70.0f;
                indexVecB_8[2] = -130.0f;
    
    
                osg::Vec3 indexVecB_10;
                indexVecB_10[0] = 7700.0f;
                indexVecB_10[1] = -150.0f;
                indexVecB_10[2] = -130.0f;
    
                osg::Vec3 indexVecB_11;
                indexVecB_11[0] = 7700.0f;
                indexVecB_11[1] = -150.0f;
                indexVecB_11[2] = -150.0f;
    
                osg::Vec3 indexVecB_12;
                indexVecB_12[0] = 7700.0f;
                indexVecB_12[1] = 150.0f;
                indexVecB_12[2] = -150.0f;
    
                osg::Vec3 indexVecB_13;
                indexVecB_13[0] = 7700.0f;
                indexVecB_13[1] = 150.0f;
                indexVecB_13[2] = -130.0f;
    
                point_vecs_bottom.push_back(indexVecB_1);
                point_vecs_bottom.push_back(indexVecB_2);
                point_vecs_bottom.push_back(indexVecB_3);
                point_vecs_bottom.push_back(indexVecB_4);
    
                point_vecs_bottom.push_back(indexVecB_5);
                point_vecs_bottom.push_back(indexVecB_6);
                point_vecs_bottom.push_back(indexVecB_7);
                point_vecs_bottom.push_back(indexVecB_8);
    
                point_vecs_bottom.push_back(indexVecB_10);
                point_vecs_bottom.push_back(indexVecB_11);
                point_vecs_bottom.push_back(indexVecB_12);
                point_vecs_bottom.push_back(indexVecB_13);
    
            }
    
    
            //添加数据
            std::vector<osg::Vec3>::iterator iter1;
            for (iter1 = point_vecs_bottom.begin(); iter1 != point_vecs_bottom.end(); ++iter1) {
                osg::Vec3 index_point = *iter1;
                coords_face1->push_back(index_point);
            }
    
            //geom_face1->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINE_LOOP, 0, point_vecs_bottom.size()));
            geom_face1->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POLYGON, 0, point_vecs_bottom.size()));
    
    
    
            osg::ref_ptr<osgUtil::Tessellator> tscx = new osgUtil::Tessellator;
            //设置分格类型为几何体
            tscx->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);
            //设置只显示轮廓线为false。设置环绕规则,这里不太懂
            tscx->setWindingType(osgUtil::Tessellator::TESS_WINDING_ODD);
            //使用分格化
            tscx->retessellatePolygons(*(geom_face1));
    
            geode->addDrawable(geom_face1);
    
        }
    
    
        return geode;
    }

     

    #############################

  • 相关阅读:
    NOIP2002字串变换[BFS]
    NOIP2000单词接龙[DFS]
    NOIP2003传染病控制[按层DFS]
    NOIP1999邮票面值设计[搜索|DP]
    USACO1.1Broken Necklace[环状DP作死]
    洛谷P1120小木棍[DFS]
    NOIP2000进制转换
    Miller-Rabin素数快速检测
    【数论算法理论与实现】
    洛谷P1141 01迷宫
  • 原文地址:https://www.cnblogs.com/herd/p/15545934.html
Copyright © 2011-2022 走看看