我们知道,OSG中用来绘制多边形的绘图基元是osg::PrimitiveSet::POLYGON。但是仅仅靠这个绘图基元无法绘制出凹多边形,经过资料查找,发现了绘制凹多边形的方法和思路,不多废话,直接上代码。
凹多边形的实现:
//绘制环形
//两个半径参数
float radius1 = 1800.0;
float radius2 = 1350.0;
osg::ref_ptr<osg::Geometry>geom_AirArea_part2 = new osg::Geometry;
osg::ref_ptr<osg::Vec3Array> airLine_area_part2 = new osg::Vec3Array;
//添加绘制顶点
for (float i = 0; i <= 314; i += 0.5)
{
airLine_area_part2->push_back(osg::Vec3((radius1 * cos(i / 100) - radius1 + bias_x + 250.0)*3.7, (10305.0 - bias_y + radius1 * sin(i / 100))*3.7, (400.0 - i / 3.14)*3.7));
}
for (float i = 314; i >= 0; i -= 0.5)
{
airLine_area_part2->push_back(osg::Vec3((radius2 * cos(i / 100) - radius2 + bias_x - 250.0)*3.7, (10305.0 - bias_y + radius2 * sin(i / 100))*3.7, (400.0 - i / 3.14)*3.7));
}
geom_AirArea_part2-&g