三个点求圆心

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三个点求圆心相关的知识,希望对你有一定的参考价值。

大概这样、求圆心。这个是不规则的。 求大侠帮帮忙、 工地的。求圆心

圆上3个点,取任意2点可以连成一条线,用这3个点连2条线,画这2条线的中垂线,中垂线的交点就是圆心
同理,取4点中的3点,3个不在同一直线上的点确定一个平面,做出圆心,以这个圆心为垂心,做一条垂线垂直于这个平面,同理在做一个平面,过这个面所在圆的圆心做垂线,这2条垂线的交点就是球心.
求球心最直接的办法就是,设球心坐标E(X,Y,Z),利用球心到球面上任意一点的距离相等,写方程组,例如令|EA|=|EB|,|EA|=|EC|,|EB|=|ED|,即可直接求出

代入圆方程公式 (X-a)²+(Y-b)²=r²
将A,B,C,三点分点代入公式,得
a²+b²=r²
(2.005-a)²+(0.05-b)²=r²
(4.01-a)²+(0.335-b)²=r²
联合三式,可得
a=
b=
代入一式,可得
r=
自己算吧追问

这个呢?

参考技术A 把3个点连接起来分别做2线段的中垂线
交点就是圆心追问

这个呢?

追答

这个一样的 连接起来3点后任意选2条线段做中垂线。交点就是圆心

本回答被提问者采纳

Ancient Berland Circus CodeForces - 1C

题意:给定一个正多边形的三个顶点,求这个正多边形的最小面积。

思路:首先,边数越小面积越小,所以只要确定出包含这三个顶点的边数最小的正多边形即可。这个三角形和正多边形外接同一个圆。所以先求出外接圆的半径,再求出三个圆心角,易得这个多边形的边所对应的圆心角可被这三个圆心角整除,所以三个圆心角的gcd就是多边形边所对的圆心角,然后2π除一下就得到是几边形,之后就可计算面积了

海伦公式: p=(a+b+c)/2,S=√p(p-a)(p-b)(p-c)(a,b,c为三角形的三边,S为三角形面积) 

求外接圆半径r=a*b*c/4S 

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<stack>
#include<cstdlib>
#include<queue>
#include<set>
#include<string.h>
#include<vector>
#include<deque>
#include<map>
using namespace std;
#define INF 0x3f3f3f3f
#define eps 1e-4
#define bug printf("*********\n")
#define debug(x) cout<<#x"=["<<x<<"]" <<endl
typedef long long LL;
typedef long long ll;
const int MAXN = 1e6 + 5;
const int mod = 998244353;

struct node
    double x,y;
;
double len(node a,node b) 
    double tmp = sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
    return tmp;

double gcd(double x,double y) 
    while(fabs(x) > eps && fabs(y) > eps) 
        if(x > y)
            x -= floor(x / y) * y;
        else
            y -= floor(y / x) * x;
    
    return x + y;

int main()

    node a,b,c;
    cin >> a.x >> a.y >> b.x >> b.y >> c.x >> c.y;
    double lena = len(a,b);
    double lenb = len(b,c);
    double lenc = len(a,c);

    double p = (lena + lenb + lenc) / 2.0;
    double S = sqrt(p * (p - lena) * (p - lenb) * (p - lenc));
    double R = lena * lenb * lenc / (4.0 * S);
    double A = acos((lenb * lenb + lenc * lenc - lena * lena) / (2 * lenb * lenc));
    double B = acos((lena * lena + lenc * lenc - lenb * lenb) / (2 * lena * lenc));
    double C = acos((lena * lena + lenb * lenb - lenc * lenc) / (2 * lena * lenb));
    double PI = acos(-1.0);
    double n = PI / gcd(gcd(A,B),C);
    double ans = n / 2 * R * R * sin(2 * PI / n);
    printf("%.10f\n",ans);

 

以上是关于三个点求圆心的主要内容,如果未能解决你的问题,请参考以下文章

已知一个圆经过三点,怎样求圆心坐标啊?

二维三点求圆心

QT快速入门三点求圆心实现详解

空间三点圆心计算公式

HDU 6242(随机化&求圆心)

已知平行四边形的三个点求第四个点