Esempio n. 1
0
        //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);
        }
Esempio n. 2
0
        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));
        }