解析 c语言编写的根据三点得出圆心和半径的数学含义

能否把每一行的数学中的几何意义说明一下,感谢各位前辈,(倒数第二行是求半径,已知数学意义)

第1个回答  2018-12-24
/***************
* 已知三点求圆的 get_circle() 函数
* x1, y1为第一个点的坐标,以此类推
* r为求出的半径,x0, y0为圆心坐标
* 调用函数之前应先检查三点是否共线 否则会弹出被零除的错误
***************/
# include <math.h>
void get_circle(double x1, double y1, double x2, double y2, double x3, double y3, double* r, double* x0, double* y0)
{
double m1, n1, m2, n2, a1, b1, a2, b2;
m1 = (x1 + x3) / 2;
n1 = (y1 + y3) / 2;
m2 = (x2 + x3) / 2;
n2 = (y2 + y3) / 2;
a1 = (y3 - y1) / (x3 - x1);
b1 = n1 - a1*m1;
a2 = (y3 - y2) / (x3 - x2);
b2 = n2 - a2*m2;
*x0 = (b2 - b1) / (a1 - a2);
*y0 = a1 * *x0 + b1;
*r = sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0));
return;
}

希望对你有帮助!本回答被网友采纳
第2个回答  2020-12-30
已验证楼上的程序有些小错误,导致无法输出或者结果错误,正确程序是
void get_circle(double x1, double y1, double x2, double y2, double x3, double y3)
{
double m1, n1, m2, n2, a1, b1, a2, b2,x0, y0, r;
m1 = (x1 + x2) / 2;
n1 = (y1 + y2) / 2;
printf("\n\t第一条垂直平分线必过点为(%f,%f)", m1, n1);
m2 = (x2 + x3) / 2;
n2 = (y2 + y3) / 2;
printf("\n\t第二条垂直平分线必过点为(%f,%f)", m2, n2);
a1 = -(x2 - x1) / (y2 - y1);
b1 = n1 - a1 * m1;
printf("\n\t第一条垂直平分线为y=%fx+%f", a1, b1);
a2 = -(x3 - x2) / (y3 - y2);
b2 = n2 - a2 * m2;
printf("\n\t第二条垂直平分线为y=%fx+%f", a2, b2);
x0 = (b2 - b1) / (a1 - a2);
y0 = a1 * x0 + b1;
r = sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0));
printf("\n\t%lf %lf %lf", x0, y0, r);
return;
}

C语言程序编写 输入圆半径(5)和圆心角(60°),输出圆的周长,面积和扇形...
return (3.14* x* x);} double sl(float x, float y){ return (2* x+ 2* 3.14* x* y \/360);} double ss(float x, float y){ return (3.14* x* x *y\/ 360);} int main(){ float r,ca;\/\/r半径,ca圆心角 printf("请输入圆半径:\\n");scanf("%f",&r);printf("...

用C语言编写:输入半径R,求圆的面积和内接正n边形的面积
对于单位圆的内接正n边形,将它们每一个顶点和圆心相连,那么就将该n边形分成了n个面积相同的等腰三角形,每个三角形的顶角就为(360\/n)度,那么 每个三角形的面积 = (1\/2)R*R*sin(360\/n)所以:内接正n边形总面积 = (n\/2)(R^2)sin(360\/n)

用c语言写画出一个空心圆的程序,可以输入自己随意输入圆心坐标和半径...
给你个思想,首先指定圆心和半径,园周上的点与角度是服从y=sin(a),x=cos(a)正反弦函数关系的,依次规则可以从0到2派逐点将圆画出来。或者分别制定x轴或y轴的半径的起始点根据x的平方+y的平方=半径的公式对应的确定y和x再一次地画出正负的点。

C语言 求多边形 外接圆的圆心,半径。 已知多边形各点的坐标。 “代码好...
我觉得只要画圆就可以了,只不过有俩个是半圆,其他的都是些圆的作和.

地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序...
\/\/已知半径、圆心角角度(弧度制),求圆心角对应的弦长 double getChordByRadiusAngle(double radius, double angle){ return 2.0 * radius * sin((angle \/ 2.0));\/\/求得弦长 } \/\/已知半径、弦长,求弧对应的弧度(弧度制)double getAngleByRadiusChord(double radius, double chord){ return...

求一个用C语言编写五子棋游戏的全部代码.
使用语言:C++使用工具:vs2019

怎么用codeblocks编写c语言的图形程序
在codeblocks中,可以通过集成EGE库,来实现C语言图形程序的编写,具体方式如下:一、安装:1、下载ege安装包;2、将安装包解压;3、把压缩包里include目录下所有文件,复制到编译器安装目录下的include目录内,例如D:\\MinGW\\include\\;4、把lib目录下对应编译器名目录下的文件,复制到编译器安装目录下的...

注释的快捷键(c语言全部注释的快捷键)
c语言全部注释的快捷键有哪些 如果是Visual Stdio的话 CTRL + SHIFT + B 生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O 打开项目 CTRL + SHIFT + C 显示类视图窗口 F4 显示属性窗口 SHIFT + F4 显示项目属性窗口 CTRL + SHIFT + E 显示资源视图 F12 转到定义 CTR...

python3.x的版本共有多少个保留字
TempStr[-1]in['C','c']判断前者是否与列表中的某个元素相同 赋值语句:由赋值符号构成的一行代码 赋值符号笔者之前提过,就是我们俗称的等于号,但等于号在编程语言中通常表示赋值,不表示等于号的含义。 1、赋值语句用来给变量赋予新的数据值 C=(eval(TempStr[0:-1])-32)\/1.8#右侧运算结果值赋值给C 2、赋...

数学在生活中的应用有哪些
详情请查看视频回答

相似回答