Geometry.ComputeBoundingSphere Method |
Language: |
Computes a bounding sphere for a mesh.
Visual Basic Public Shared Function ComputeBoundingSphere( _
ByVal pointsFvf As GraphicsStream, _
ByVal numVertices As Integer, _
ByVal vertexFormat As VertexFormats, _
ByRef center As Vector3 _
) As SingleC# public static float ComputeBoundingSphere(
GraphicsStream pointsFvf,
int numVertices,
VertexFormats vertexFormat,
out Vector3 center
);C++ public:
static float ComputeBoundingSphere(
GraphicsStream^ pointsFvf,
int numVertices,
VertexFormats vertexFormat,
[Out] Vector3% center
);JScript public static function ComputeBoundingSphere(
pointsFvf : GraphicsStream,
numVertices : int,
vertexFormat : VertexFormats,
center : Vector3
) : float;
pointsFvf Microsoft.DirectX.GraphicsStream
A GraphicsStream object that contains the points around which the bounding sphere is constructed.numVertices System.Int32
Number of vertices.vertexFormat Microsoft.DirectX.Direct3D.VertexFormats
A VertexFormats object that specifies the format of the vertices that are passed in.center Microsoft.DirectX.Vector3
A Vector3 structure that defines the coordinate center of the returned bounding sphere.
System.Single
Radius of the returned bounding sphere.
Compute a Bounding Sphere from a Mesh
This example shows how to generate a simple bounding sphere around a 3-D object, using the Geometry.ComputeBoundingSphere method. A bounding sphere has many possible uses in 3-D graphics; for example, to help test whether one 3-D object intersects with another.
In the following C# code example, a vertex buffer is created from the vertex data of the mesh object. The new vertex buffer is then locked so that Geometry algorithms can be computed on it. The output of the ComputeBoundingSphere is the radius from the center to the farthest extremity of the mesh object. The mesh object is assumed to be a valid mesh loaded with Mesh.FromFile.
[C#]
float objectRadius = 0.0f; Vector3 objectCenter = new Vector3(); using (VertexBuffer vb = Mesh.VertexBuffer) { GraphicsStream vertexData = vb.Lock(0, 0, LockFlags.None); objectRadius = Geometry.ComputeBoundingSphere(vertexData, mesh.NumberVertices, mesh.VertexFormat, out objectCenter); vb.Unlock(); }
Send comments about this topic to Microsoft. © Microsoft Corporation. All rights reserved.
Feedback? Please provide us with your comments on this topic.
For more help, visit the DirectX Developer Center