点与圆的位置小练习

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 综合练习
{
    /// <summary>
    /// 点的构造函数
    /// </summary>
    public struct Point
    {
        public int X;
        public int Y;
        public Point(int x, int y)
        {
            this.X = x;
            this.Y = y;
        }
    }

    /// <summary>
    /// 圆的位置枚举
    /// </summary>
    public enum Position
    {
        On,
        In,
        Out
    }

    public class Circle
    {
        private Point center;
        private double area;
        private double radius = 0;
        private static int count = 0;

        #region 构造函数
        public Circle()
        {
            radius = 5;
            center = new Point(0, 0);
            Circle.count++;
        }

        public Circle(int radius)
        {
            this.radius = radius;
            center = new Point(0, 0);
            Circle.count++;
        }

        public Circle(int radius, Point center)
        {
            this.radius = radius;
            this.center = center;
            Circle.count++;
        }

        public Circle(int radius, int centerX, int centerY)
        {
            this.radius = radius;
            center = new Point(centerX, centerY);
            Circle.count++;
        }
        #endregion

        /// <summary>
        /// 圆心
        /// </summary>
        public Point Center
        {
            get
            {
                return center;
            }
            set
            {
                center = value;
            }
        }

        /// <summary>
        /// 圆的面积
        /// </summary>
        public double Area
        {
            get
            {
                return Math.PI * (Math.Pow(radius, 2));
            }
        }

        /// <summary>
        /// 圆的半径
        /// </summary>
        public double Radius
        {
            get
            {
                return radius;
            }
            set
            {
                if (value < 0)
                {
                    Console.WriteLine("半径错误!");
                }
                else
                {
                    radius = value;
                }
            }
        }

        public static int Count
        {
            get
            {
                return count;
            }
        }

        #region 方法
        /// <summary>
        /// 比较位置
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public Position GetResult(int x,int y)
        {
            Position result;
            double x1 = Math.Pow((x - center.X), 2);
            double x2 = Math.Pow((y - center.Y), 2);
            double d = Math.Sqrt(x1 + x2);
            if (d > radius)
            {
                result = Position.Out;
            }
            else
            {
                if (d == radius)
                {
                    result = Position.On;
                }
                else
                {
                    result = Position.In;
                }
            }
            return result;
        }
        public Position GetResult(Point center)
        {
            return GetResult(center.X, center.Y);
        }
        #endregion


    }

    class Program
    {
        static void Main(string[] args)
        {
            Point p1 = new Point(10, 5);
            Point p2 = new Point(20,35);
            Circle c1 = new Circle(30);
            Circle c2 = new Circle(40, p1);
            Circle c3 = new Circle(50, 10, 25);
            Circle c4 = new Circle();
            Console.WriteLine("一共创建圆的实例个数为:{0}",Circle.Count);
            Console.WriteLine("------------------------");
            Console.WriteLine("半径为{0}的圆形面积为{1}",c1.Radius,c1.Area);
            Console.WriteLine("点与圆的位置为{0}",c1.GetResult(p1));
            Console.WriteLine("------------------------");
            Console.WriteLine("半径为{0}的圆形面积为{1}", c2.Radius, c2.Area);
            Console.WriteLine("点与圆的位置为{0}", c2.GetResult(30,50));
            Console.WriteLine("------------------------");
            Console.WriteLine("半径为{0}的圆形面积为{1}", c3.Radius, c3.Area);
            Console.WriteLine("点与圆的位置为{0}", c3.GetResult(p2));
            Console.WriteLine("------------------------");
            Console.WriteLine("半径为{0}的圆形面积为{1}", c4.Radius, c4.Area);
            Console.WriteLine("点与圆的位置为{0}", c4.GetResult(10,10));
        }
    }
}

posted on 2011-01-11 09:05  剑心老三儿  阅读(208)  评论(0)    收藏  举报

导航