【进化版】三角形外心坐标和外接圆半径

  1. 云栖社区>
  2. 博客>
  3. 正文

【进化版】三角形外心坐标和外接圆半径

this_is_bill 2014-09-20 15:37:00 浏览761
展开阅读全文

自己重写了一个更具有针对性的计算模板!!

欧耶~~~


功能:已知一个三角形的三个顶点的坐标,求他的外心及外接圆半径

#include <stdio.h>
#include <math.h>

typedef struct
{
	double x;
	double y;
}myPoint;


double distance(myPoint A,myPoint B)
{
	double dis = (A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y);

	return sqrt(dis);
}



void   miniCircle(myPoint   *p,myPoint&   center,double&   radius)   
{
	double   Xmove=p[0].x;   
	double   Ymove=p[0].y;
	p[1].x=p[1].x-p[0].x;
	p[1].y=p[1].y-p[0].y;
	p[2].x=p[2].x-p[0].x;
	p[2].y=p[2].y-p[0].y;
	p[0].x=0;
	p[0].y=0;
	int  index;

	double   x1=p[1].x,y1=p[1].y,x2=p[2].x,y2=p[2].y;   
	double   m=2.0*(x1*y2-y1*x2);   
	center.x=(x1*x1*y2-x2*x2*y1+y1*y2*(y1-y2))/m;   
	center.y=(x1*x2*(x2-x1)-y1*y1*x2+x1*y2*y2)/m;   
	radius=distance(center,p[0]);
	center.x+=Xmove;   
	center.y+=Ymove;     

}

int main()
{
	myPoint point[1000],center;
	double  radius;

	printf("请依次输入处理点坐标:\n");

	//输入点,放入p[]数组
	int i;
	for(i=0;i<3;i++)
		scanf("%lf%lf",&point[i].x,&point[i].y);

	miniCircle(point,center,radius);

	printf("三角形外心坐标为:(%.2lf,%.2lf)\n",center.x,center.y);
	printf("三角形外接圆半径为:%.2lf\n",radius);

	return 0;
}


顺便附上C++中常用函数的函数名:

三角函数和反三角函数 
cos(),sin(),tan(),acos(),asin(),atan(),atan2() 

双曲函数: 
cosh(),sinh(),tanh() 

指数对数函数: 
exp(),frexp(),ldexp(),log(),log10(),modf() 

幂函数和平方根函数: 
pow(),sqrt() 

绝对值,上下限值,模函数: 
ceil(),fabs(),floor(),fmod()



网友评论

登录后评论
0/500
评论
this_is_bill
+ 关注