用 c#通过3点坐标计算半径,弧度,圆心坐标
时间: 2023-10-04 09:11:24 浏览: 110
可以通过以下代码实现:
```csharp
public static void GetCircleInfo(PointF p1, PointF p2, PointF p3, out float radius, out float radian, out PointF center)
{
float a, b, c, d, e, f;
a = p2.X - p1.X;
b = p2.Y - p1.Y;
c = p3.X - p1.X;
d = p3.Y - p1.Y;
e = a * (p1.X + p2.X) + b * (p1.Y + p2.Y);
f = c * (p1.X + p3.X) + d * (p1.Y + p3.Y);
float g = 2 * (a * (p3.Y - p2.Y) - b * (p3.X - p2.X));
if (g == 0)
{
radius = 0;
radian = 0;
center = PointF.Empty;
return;
}
float centerX = (d * e - b * f) / g;
float centerY = (a * f - c * e) / g;
radius = (float)Math.Sqrt((p1.X - centerX) * (p1.X - centerX) + (p1.Y - centerY) * (p1.Y - centerY));
radian = (float)Math.Atan2(p1.Y - centerY, p1.X - centerX);
center = new PointF(centerX, centerY);
}
```
其中,p1、p2、p3 分别为三个点的坐标,radius、radian、center 为输出参数,分别表示圆的半径、弧度、圆心坐标。使用时传入三个点的坐标,即可得到圆的信息。