AGI STK Graphics 11 Send comments on this topic.
IAgStkGraphicsSolidPrimitive Interface





Description

Renders filled solid objects and their outlines. Example solids include boxes and ellipsoids. Various effects are supported, such as displaying the solid's silhouette, and hidding the outline of the backside of the solid. In cases where you just want to visualize a solid's fill or outline, a Triangle Mesh Primitive or Polyline Primitive can be used for reduced overhead.

Public Methods

Public Method Set Defines the solid using the specified parameters. The solid is rendered in the primitive's Reference Frame.
Public Method SetWithResult Defines the solid using the specified solidTriangulatorResult. The solid is rendered in the primitive's Reference Frame.

Public Properties

Public Property AffectedByLighting Gets or sets whether the primitive is affected by lighting.
Public Property BackLineColor Gets or sets the back line's color.
Public Property BackLineTranslucency Gets or sets the back line's translucency. Translucency is between 0 and 1, where 0 is opaque and 1 is transparent.
Public Property BackLineWidth Gets or sets the back line's width, in pixels.
Public Property DisplayFill Gets or sets whether the solid's fill is displayed.
Public Property DisplayOutline Gets or sets whether the solid's outline is displayed.
Public Property DisplaySilhouette Gets or sets whether the solid's silhouette is displayed.
Public Property MaximumSilhouetteWidthSupported Gets the maximum silhouette width, in pixels, supported by the video card.
Public Property MinimumSilhouetteWidthSupported Gets the minimum silhouette width, in pixels, supported by the video card.
Public Property OutlineAppearance Gets or sets the outline's appearance.
Public Property OutlineColor Gets or sets the outline's color.
Public Property OutlineTranslucency Gets or sets the outline's translucency. Translucency is between 0 and 1, where 0 is opaque and 1 is transparent.
Public Property OutlineWidth Gets or sets the outline's width, in pixels.
Public Property Position Gets or sets the solid's position. The position is defined in the solid's Reference Frame. The array contains the components of the position in the order x, y, z.
Public Property Rotation Gets or sets the rotation applied to the solid before rendering.
Public Property Scale Gets or sets a non-uniform scale that is applied to the solid to increase or decrease its rendered size. The array contains the scale for each component of the size in the order x scale, y scale, z scale.
Public Property SetHint Gets the primitive's Set Hint. See the Set Hint Performance Overview for selecting an appropriate value to construct the primitive with.
Public Property SilhouetteColor Gets or sets the silhouette's color.
Public Property SilhouetteTranslucency Gets or sets the silhouette's translucency. Translucency is between 0 and 1, where 0 is opaque and 1 is transparent.
Public Property SilhouetteWidth Gets or sets the silhouette' width, in pixels.

Example

Z-order primitives on the surface
[C#] Copy Code
IAgStkGraphicsSceneManager manager = ((IAgScenario)root.CurrentScenario).SceneManager; 
 
IAgStkGraphicsTriangleMeshPrimitive pennsylvania = manager.Initializers.TriangleMeshPrimitive.Initialize(); 
pennsylvania.SetTriangulator((IAgStkGraphicsTriangulatorResult)manager.Initializers.SurfacePolygonTriangulator.Compute( 
    "Earth"ref pennsylvaniaPositions)); 
((IAgStkGraphicsPrimitive)pennsylvania).Color = Color.Yellow; 
 
IAgStkGraphicsTriangleMeshPrimitive areaCode610 = manager.Initializers.TriangleMeshPrimitive.Initialize(); 
areaCode610.SetTriangulator((IAgStkGraphicsTriangulatorResult)manager.Initializers.SurfacePolygonTriangulator.Compute( 
    "Earth"ref areaCode610Positions)); 
((IAgStkGraphicsPrimitive)areaCode610).Color = Color.DarkRed; 
 
IAgStkGraphicsTriangleMeshPrimitive areaCode215 = manager.Initializers.TriangleMeshPrimitive.Initialize(); 
areaCode215.SetTriangulator((IAgStkGraphicsTriangulatorResult)manager.Initializers.SurfacePolygonTriangulator.Compute( 
    "Earth"ref areaCode215Positions)); 
((IAgStkGraphicsPrimitive)areaCode215).Color = Color.Green; 
 
IAgStkGraphicsPolylinePrimitive schuylkillRiver = manager.Initializers.PolylinePrimitive.Initialize(); 
schuylkillRiver.Set(ref schuylkillPositions); 
((IAgStkGraphicsPrimitive)schuylkillRiver).Color = Color.Blue; 
schuylkillRiver.Width = 2
 
IAgStkGraphicsCompositePrimitive composite = manager.Initializers.CompositePrimitive.Initialize(); 
composite.Add((IAgStkGraphicsPrimitive)pennsylvania); 
composite.Add((IAgStkGraphicsPrimitive)areaCode610); 
composite.Add((IAgStkGraphicsPrimitive)areaCode215); 
composite.Add((IAgStkGraphicsPrimitive)schuylkillRiver); 
 
manager.Primitives.Add((IAgStkGraphicsPrimitive)composite); 
 

Draw a box
[C#] Copy Code
IAgStkGraphicsSceneManager manager = ((IAgScenario)root.CurrentScenario).SceneManager; 
 
Array size = new object[] {100010002000 }; 
IAgStkGraphicsSolidTriangulatorResult result = manager.Initializers.BoxTriangulator.Compute(ref size); 
IAgStkGraphicsSolidPrimitive solid = manager.Initializers.SolidPrimitive.Initialize(); 
((IAgStkGraphicsPrimitive)solid).ReferenceFrame = system; 
solid.SetWithResult(result); 
 
manager.Primitives.Add((IAgStkGraphicsPrimitive)solid); 
 

Draw a cylinder
[C#] Copy Code
IAgStkGraphicsSceneManager manager = ((IAgScenario)root.CurrentScenario).SceneManager; 
 
IAgStkGraphicsSolidTriangulatorResult result = manager.Initializers.CylinderTriangulator.CreateSimple(10002000); 
IAgStkGraphicsSolidPrimitive solid = manager.Initializers.SolidPrimitive.Initialize(); 
((IAgStkGraphicsPrimitive)solid).ReferenceFrame = system; 
((IAgStkGraphicsPrimitive)solid).Color = Color.Yellow; 
solid.OutlineColor = Color.Black; 
solid.OutlineWidth = 2
solid.OutlineAppearance = AgEStkGraphicsOutlineAppearance.eStkGraphicsStylizeBackLines; 
solid.BackLineColor = Color.Black; 
solid.BackLineWidth = 1
solid.SetWithResult(result); 
 
manager.Primitives.Add((IAgStkGraphicsPrimitive)solid); 
 

Draw an ellipsoid
[C#] Copy Code
IAgStkGraphicsSceneManager manager = ((IAgScenario)root.CurrentScenario).SceneManager; 
 
Array radii = new object[] {200010001000 }; 
IAgStkGraphicsSolidTriangulatorResult result = manager.Initializers.EllipsoidTriangulator.ComputeSimple(ref radii); 
IAgStkGraphicsSolidPrimitive solid = manager.Initializers.SolidPrimitive.Initialize(); 
((IAgStkGraphicsPrimitive)solid).ReferenceFrame = system; 
((IAgStkGraphicsPrimitive)solid).Color =  Color.Orange; 
((IAgStkGraphicsPrimitive)solid).Translucency = 0.3f
solid.OutlineAppearance = AgEStkGraphicsOutlineAppearance.eStkGraphicsFrontLinesOnly; 
solid.OutlineColor = Color.Blue; 
solid.OutlineWidth = 2
solid.DisplaySilhouette = true
solid.SetWithResult(result); 
 
manager.Primitives.Add((IAgStkGraphicsPrimitive)solid); 
 

Z-order primitives on the surface
[Visual Basic .NET] Copy Code
Dim manager As IAgStkGraphicsSceneManager = DirectCast(root.CurrentScenario, IAgScenario).SceneManager

Dim pennsylvania As IAgStkGraphicsTriangleMeshPrimitive = manager.Initializers.TriangleMeshPrimitive.Initialize()
pennsylvania.SetTriangulator(DirectCast(manager.Initializers.SurfacePolygonTriangulator.Compute("Earth", pennsylvaniaPositions), IAgStkGraphicsTriangulatorResult))
DirectCast(pennsylvania, IAgStkGraphicsPrimitive).Color = Color.Yellow

Dim areaCode610 As IAgStkGraphicsTriangleMeshPrimitive = manager.Initializers.TriangleMeshPrimitive.Initialize()
areaCode610.SetTriangulator(DirectCast(manager.Initializers.SurfacePolygonTriangulator.Compute("Earth", areaCode610Positions), IAgStkGraphicsTriangulatorResult))
DirectCast(areaCode610, IAgStkGraphicsPrimitive).Color = Color.DarkRed

Dim areaCode215 As IAgStkGraphicsTriangleMeshPrimitive = manager.Initializers.TriangleMeshPrimitive.Initialize()
areaCode215.SetTriangulator(DirectCast(manager.Initializers.SurfacePolygonTriangulator.Compute("Earth", areaCode215Positions), IAgStkGraphicsTriangulatorResult))
DirectCast(areaCode215, IAgStkGraphicsPrimitive).Color = Color.Green

Dim schuylkillRiver As IAgStkGraphicsPolylinePrimitive = manager.Initializers.PolylinePrimitive.Initialize()
schuylkillRiver.Set(schuylkillPositions)
DirectCast(schuylkillRiver, IAgStkGraphicsPrimitive).Color = Color.Blue
schuylkillRiver.Width = 2

Dim composite As IAgStkGraphicsCompositePrimitive = manager.Initializers.CompositePrimitive.Initialize()
composite.Add(DirectCast(pennsylvania, IAgStkGraphicsPrimitive))
composite.Add(DirectCast(areaCode610, IAgStkGraphicsPrimitive))
composite.Add(DirectCast(areaCode215, IAgStkGraphicsPrimitive))
composite.Add(DirectCast(schuylkillRiver, IAgStkGraphicsPrimitive))

manager.Primitives.Add(DirectCast(composite, IAgStkGraphicsPrimitive))

Draw a box
[Visual Basic .NET] Copy Code
Dim manager As IAgStkGraphicsSceneManager = DirectCast(root.CurrentScenario, IAgScenario).SceneManager

Dim pos As Array = New Object() {1000, 1000, 2000}
Dim result As IAgStkGraphicsSolidTriangulatorResult = manager.Initializers.BoxTriangulator.Compute(pos)
Dim solid As IAgStkGraphicsSolidPrimitive = manager.Initializers.SolidPrimitive.Initialize()
DirectCast(solid, IAgStkGraphicsPrimitive).ReferenceFrame = system
solid.SetWithResult(result)

manager.Primitives.Add(DirectCast(solid, IAgStkGraphicsPrimitive))

Draw a cylinder
[Visual Basic .NET] Copy Code
Dim manager As IAgStkGraphicsSceneManager = DirectCast(root.CurrentScenario, IAgScenario).SceneManager

Dim result As IAgStkGraphicsSolidTriangulatorResult = manager.Initializers.CylinderTriangulator.CreateSimple(1000, 2000)
Dim solid As IAgStkGraphicsSolidPrimitive = manager.Initializers.SolidPrimitive.Initialize()
DirectCast(solid, IAgStkGraphicsPrimitive).ReferenceFrame = system
DirectCast(solid, IAgStkGraphicsPrimitive).Color = Color.Yellow
solid.OutlineColor = Color.Black
solid.OutlineWidth = 2
solid.OutlineAppearance = AgEStkGraphicsOutlineAppearance.eStkGraphicsStylizeBackLines
solid.BackLineColor = Color.Black
solid.BackLineWidth = 1
solid.SetWithResult(result)

manager.Primitives.Add(DirectCast(solid, IAgStkGraphicsPrimitive))

Draw an ellipsoid
[Visual Basic .NET] Copy Code
Dim manager As IAgStkGraphicsSceneManager = DirectCast(root.CurrentScenario, IAgScenario).SceneManager

Dim radii As Array = New Object() {2000, 1000, 1000}
Dim result As IAgStkGraphicsSolidTriangulatorResult = manager.Initializers.EllipsoidTriangulator.ComputeSimple(radii)
Dim solid As IAgStkGraphicsSolidPrimitive = manager.Initializers.SolidPrimitive.Initialize()
DirectCast(solid, IAgStkGraphicsPrimitive).ReferenceFrame = DirectCast(system, IAgCrdnSystem)
DirectCast(solid, IAgStkGraphicsPrimitive).Color = Color.Orange
DirectCast(solid, IAgStkGraphicsPrimitive).Translucency = 0.3F
solid.OutlineAppearance = AgEStkGraphicsOutlineAppearance.eStkGraphicsFrontLinesOnly
solid.OutlineColor = Color.Blue
solid.OutlineWidth = 2
solid.DisplaySilhouette = True
solid.SetWithResult(result)

manager.Primitives.Add(DirectCast(solid, IAgStkGraphicsPrimitive))

Draw a Solid Box Primitive and set properties
[MATLAB] Copy Code
% IAgScenario scenario: Scenario object 
manager = scenario.SceneManager; 
originBox = root.ConversionUtility.NewPositionOnEarth(); 
originBox.AssignGeodetic(0, 3, 100); 
 
orientBox = root.ConversionUtility.NewOrientation(); 
orientBox.AssignAzEl(0,0,'eAzElAboutBoresightRotate'); 
 
size = {100; 100; 200}; 
result = manager.Initializers.BoxTriangulator.Compute(size); 
solidBox = manager.Initializers.SolidPrimitive.Initialize(); 
solidBox.ReferenceFrame = root.CentralBodies.Earth.Vgt.Systems.Item('Fixed'); 
solidBox.Position = originBox.QueryCartesianArray; 
solidBox.SetWithResult(result); 
solidBox.Color = 255; 
solidBox.OutlineColor = 16776974; 
solidBox.Translucency = .75; 
solidBox.Rotation = orientBox; 
manager.Primitives.Add(solidBox); 
manager.Render; 
 
 
Draw a Solid Ellipsoid Primitive and set properties
[MATLAB] Copy Code
% IAgScenario scenario: Scenario object 
manager = scenario.SceneManager; 
originEllipsoid = root.ConversionUtility.NewPositionOnEarth(); 
originEllipsoid.AssignGeodetic(0, 5, 100); 
 
orientEllipsoid = root.ConversionUtility.NewOrientation(); 
orientEllipsoid.AssignAzEl(0,0,'eAzElAboutBoresightRotate'); 
 
radii = {200; 100; 100}; 
ellipsoid = manager.Initializers.EllipsoidTriangulator.ComputeSimple(radii); 
solidEllipsoid = manager.Initializers.SolidPrimitive.Initialize(); 
solidEllipsoid.ReferenceFrame = root.CentralBodies.Earth.Vgt.Systems.Item('Fixed');%vgtSat.Systems.Item('Body');% 
solidEllipsoid.Position = originEllipsoid.QueryCartesianArray; 
solidEllipsoid.SetWithResult(ellipsoid); 
solidEllipsoid.Color = 16777215; 
solidEllipsoid.OutlineColor = 15863551; 
solidEllipsoid.Translucency = .75; 
solidEllipsoid.Rotation = orientEllipsoid; 
manager.Primitives.Add(solidEllipsoid); 
manager.Render; 
 
 
Draw a Solid Cylinder Primitive and set properties
[MATLAB] Copy Code
% IAgScenario scenario: Scenario object 
manager = scenario.SceneManager; 
originCylinder = root.ConversionUtility.NewPositionOnEarth(); 
originCylinder.AssignGeodetic(0, 7, 100); 
 
orientCylinder = root.ConversionUtility.NewOrientation(); 
orientCylinder.AssignAzEl(0,0,'eAzElAboutBoresightRotate'); 
 
cylinder = manager.Initializers.CylinderTriangulator.CreateSimple(200,100); 
solidCylinder = manager.Initializers.SolidPrimitive.Initialize(); 
solidCylinder.ReferenceFrame = root.CentralBodies.Earth.Vgt.Systems.Item('Fixed'); 
solidCylinder.Position = originCylinder.QueryCartesianArray; 
solidCylinder.SetWithResult(cylinder); 
solidCylinder.Color = 65280; 
solidCylinder.OutlineColor = 16711680; 
solidCylinder.OutlineWidth = 3; 
solidCylinder.Translucency = .75; 
solidCylinder.Rotation = orientCylinder; 
manager.Primitives.Add(solidCylinder); 
manager.Render; 
 
 

See Also

CoClasses that Implement IAgStkGraphicsSolidPrimitive

© 2016 All Rights Reserved.

STK Programming Interface 11.0.1