Geometry3D.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media3D / Geometry3D.cs / 1305600 / Geometry3D.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (c) Microsoft Corporation.  All rights reserved.
//  
//
// History: 
//  6/10/2004 : [....] - Created 
//
//--------------------------------------------------------------------------- 

using MS.Internal.Media3D;
using System;
using System.Diagnostics; 
using System.Windows.Media.Animation;
using System.Windows.Media.Composition; 
 
namespace System.Windows.Media.Media3D
{ 
    /// 
    ///     This is the base class for all 3D geometry classes.  A geometry has
    ///     bounds and can be rendered with a GeometryModel3D.
    ///  
    [Localizability(LocalizationCategory.None, Readability = Readability.Unreadable)] // cannot be read & localized as string
    public abstract partial class Geometry3D : Animatable, DUCE.IResource 
    { 
        //-----------------------------------------------------
        // 
        //  Constructors
        //
        //-----------------------------------------------------
 
        #region Constructors
 
        // Prevent 3rd parties from extending this abstract base class. 
        internal Geometry3D() {}
 
        #endregion Constructors

        //------------------------------------------------------
        // 
        //  Public Methods
        // 
        //----------------------------------------------------- 

        #region Public Methods 

        /// 
        ///     Gets bounds for this Geometry3D.
        ///  
        public abstract Rect3D Bounds { get; }
 
        #endregion Public Methods 

        //------------------------------------------------------ 
        //
        //  Public Properties
        //
        //------------------------------------------------------ 

        //----------------------------------------------------- 
        // 
        //  Public Events
        // 
        //------------------------------------------------------

        //-----------------------------------------------------
        // 
        //  Internal Methods
        // 
        //----------------------------------------------------- 

        #region Internal Methods 

        // NOTE: Geometry3D hit testing takes the rayParams in the outer space of the
        //       Geometry3D.  That is, RayHitTest() will apply this geometry's
        //       transform to the ray for the caller. 
        //
        //       This is different than Visual hit testing which does not transform 
        //       the hit testing parameters by the Visual's transform. 
        internal void RayHitTest(RayHitTestParameters rayParams, FaceType facesToHit)
        { 
            Debug.Assert(facesToHit != FaceType.None,
                "Caller should make sure we're trying to hit something");

            Rect3D bounds = Bounds; 

            if (bounds.IsEmpty) 
            { 
                return;
            } 

            //

 

 
            Point3D origin; 
            Vector3D direction;
 
            rayParams.GetLocalLine(out origin, out direction);

            if (LineUtil.ComputeLineBoxIntersection(ref origin, ref direction, ref bounds, rayParams.IsRay))
            { 
                RayHitTestCore(rayParams, facesToHit);
            } 
 
            //
 

        }

        internal abstract void RayHitTestCore(RayHitTestParameters rayParams, FaceType hitTestableFaces); 

        #endregion Internal Methods 
    } 
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK