Corner.cs
上传用户:huazai0421
上传日期:2008-05-30
资源大小:405k
文件大小:2k
源码类别:

SilverLight

开发平台:

C#

  1. // Silver.Globe, version 0.11 for Silverlight 1.1 Alpha
  2. // Copyright © Florian Krüsch (xaml-kru.com)
  3. // xaml-kru.com/silverglobe
  4. // This source is subject to the Microsoft Public License (Ms-PL).
  5. // See http://www.microsoft.com/resources/sharedsource/licensingbasics/publiclicense.mspx.
  6. // All other rights reserved.
  7. using System;
  8. namespace SilverGlobe.Math3D
  9. {
  10.     public enum Corner : byte
  11.     {
  12.         TopLeft = 0,
  13.         TopRight = 1,
  14.         BottomRight = 2,
  15.         BottomLeft = 3
  16.     }
  17.     /// <summary>
  18.     /// Helper class that adds methods for dealing with Corner enums
  19.     /// </summary>
  20.     public static class CornerExtensions
  21.     {
  22.         /// <summary>
  23.         /// Maps a corner to a point.
  24.         /// </summary>
  25.         public static Point3D ToPoint(this Corner corner, Double z)
  26.         {
  27.             switch (corner)
  28.             {
  29.                 case Corner.TopLeft:
  30.                     return new Point3D(-1d, -1d, z);
  31.                 case Corner.BottomLeft:
  32.                     return new Point3D(-1d, 1d, z);
  33.                 case Corner.TopRight:
  34.                     return new Point3D(1d, -1d, z);
  35.                 case Corner.BottomRight:
  36.                     return new Point3D(1d, 1d, z);
  37.             }
  38.             throw new ArgumentException(String.Format("Corner value not defined: {0}.", corner));
  39.         }
  40.         /// <summary>
  41.         /// Finds the corner where a point lies in.
  42.         /// </summary>
  43.         public static Corner ToCorner(this Point3D point)
  44.         {
  45.             if (point.Y > 0)
  46.             {
  47.                 return point.X > 0 ? Corner.BottomRight : Corner.BottomLeft;
  48.             }
  49.             else
  50.             {
  51.                 return point.X > 0 ? Corner.TopRight : Corner.TopLeft;
  52.             }
  53.         }
  54.     }
  55. }