自己重写了一个更具有针对性的计算模板!!
欧耶~~~
功能:已知一个三角形的三个顶点的坐标,求他的外心及外接圆半径
#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()