|
osgearth_annotation这个例子里面给出了绘制几何体的例子。
// A path using great-circle interpolation.
{
Geometry* path = new LineString();
path->push_back( osg::Vec3d(-74, 40.714, 0) ); // New York
path->push_back( osg::Vec3d(139.75, 35.68, 0) ); // Tokyo
Style pathStyle;
pathStyle.getOrCreate<LineSymbol>()->stroke()->color() = Color::Red;
pathStyle.getOrCreate<LineSymbol>()->stroke()->width() = 3.0f;
pathStyle.getOrCreate<AltitudeSymbol>()->clamping() = AltitudeSymbol::CLAMP_TO_TERRAIN;
pathStyle.getOrCreate<AltitudeSymbol>()->technique() = AltitudeSymbol::TECHNIQUE_GPU;
Feature* pathFeature = new Feature(path, geoSRS, pathStyle);
pathFeature->geoInterp() = GEOINTERP_GREAT_CIRCLE;
//OE_INFO << "Path extent = " << pathFeature->getExtent().toString() << std::endl;
FeatureNode* pathNode = new FeatureNode(mapNode, pathFeature);
annoGroup->addChild( pathNode );
labelGroup->addChild( new LabelNode(mapNode, GeoPoint(geoSRS,-170, 61.2), "Great circle path", labelStyle) );
}
像上面这段代码里面,绘制了一条连接两地的线,但是这个线是紧贴着球体的,有什么办法能让线离开球体?就是在不同的海拔高度。比如同样经纬度但是不同高度的两条线的轨迹。。
还有Geometry的PointSet ,绘制点的时候,怎么可以实现绘制位于不同海拔高度的点啊?比如我有很多点,在同一个经纬度但是在不同的高度,怎么体现出来???求教高手指点一下。
path->push_back( osg::Vec3d(-74, 40.714, 0) ); 像这个我将0改掉之后,比较小的数值没有什么区别,比较大的数值的话,直接没有图形了。
|
|