//BoundingBox FromPoints( DataStream points, int count, int stride ) //{ // BoundingBox box; // HRESULT hr = D3DXComputeBoundingBox( reinterpret_cast<D3DXVECTOR3*>( points.PositionPointer ), count, stride, // reinterpret_cast<D3DXVECTOR3*>( &box.Minimum ), reinterpret_cast<D3DXVECTOR3*>( &box.Maximum ) ); // if( RECORD_SDX( hr ).IsFailure ) // return BoundingBox(); // return box; //} //BoundingBox FromSphere( BoundingSphere sphere ) //{ // BoundingBox box; // box.Minimum = new Vector3( sphere.Center.X - sphere.Radius, sphere.Center.Y - sphere.Radius, sphere.Center.Z - sphere.Radius ); // box.Maximum = new Vector3( sphere.Center.X + sphere.Radius, sphere.Center.Y + sphere.Radius, sphere.Center.Z + sphere.Radius ); // return box; //} public static BoundingBox Merge(BoundingBox box1, BoundingBox box2) { BoundingBox box = new BoundingBox(); Vector3.Minimize(ref box1.Minimum, ref box2.Minimum, out box.Minimum); Vector3.Maximize(ref box1.Maximum, ref box2.Maximum, out box.Maximum); return(box); }
public static BoundingBox FromPoints(Vector3[] points) { if (points == null || points.Length <= 0) { throw new ArgumentNullException("points"); } Vector3 min = new Vector3(float.MaxValue); Vector3 max = new Vector3(float.MinValue); foreach (var i in points) { Vector3 vector = i; Vector3.Minimize(ref min, ref vector, out min); Vector3.Maximize(ref max, ref vector, out max); } return(new BoundingBox(min, max)); }