⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 threepcircle.cs

📁 苏金明编写的《用VB.NET和VC#.NET开发交互式CAD系统》一书的源代码
💻 CS
字号:
using System;
using System.Drawing;
using System.Windows.Forms;

namespace Strategy
{
	/// <summary>
	/// ThreePCircle 的摘要说明。
	/// </summary>
	public class ThreePCircle:DrawCircle
	{
		private PointF m_Point1,m_Point2,m_Point3;

		public PointF Point1
		{
			get{return m_Point1;}
			set{m_Point1 = value;}
		}

		public PointF Point2
		{
			get{return m_Point2;}
			set{m_Point2 = value;}
		}

		public PointF Point3
		{
			get{return m_Point3;}
			set{m_Point3 = value;}
		}

		public PointF Center
		{
			get{return CircleCenter();}
		}

		public float Radius
		{
			get{
				return (float)(Math.Sqrt((m_Point1.X - Center.X) * (m_Point1.X - Center.X) +
						(m_Point1.X - Center.X) * (m_Point1.X - Center.X)));
			}
		}

		//无参构造函数
		public ThreePCircle()
		{
		}

		//构造函数,用已知的三点构造圆
		public ThreePCircle(PointF p1, PointF p2, PointF p3)
		{
			m_Point1 = p1;
			m_Point2 = p2;
			m_Point3 = p3;
		}

		private PointF CircleCenter()
		{
			float x0=10000;
			float y0=10000;
			float x1= m_Point1.X;
			float y1= m_Point1.Y;
			float x2= m_Point2.X;
			float y2= m_Point2.Y;
			float x3= m_Point3.X;
			float y3 = m_Point3.Y;
			float A1= x1 - x3;
			float B1 = y1 - y3;
			float A2 = x2 - x3;
			float B2 = y2 - y3;
			float C1 = (x1 * x1 - x3 * x3 + y1 * y1 - y3 * y3) / 2;
			float C2 = (x2 * x2 - x3 * x3 + y2 * y2 - y3 * y3) / 2;
			float D = A1 * B2 - A2 * B1;
			if (D == 0)
			{
				MessageBox.Show("找不到圆心。");
			}
			else
			{
				x0 = (C1 * B2 - C2 * B1) / D;
				y0 = (A1 * C2 - A2 * C1) / D;
			}
			return (new PointF(x0, y0));
		}

		//绘圆
		public override void Draw( Graphics  g)
		{
			g.DrawEllipse(Pens.Red, Center.X - Radius,
				Center.X - Radius, Radius * 2, Radius * 2);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -