赤裸裸的求三角形外接圆,即根据三点坐标确定圆心坐标和圆的半径。
圆的半径=a*b*c/(4*s)(a,b,c分别为三角形的三边长,s是三角形的面积)。
s=a*b*sinA/2
2*r*sinA=a (画图,构造直角三角形,同弧对同圆周角可证)
由上两式则可推出半径的公式。
圆心坐标。设三角形的三个顶点坐标为(ax,ay,(bx,by),(cx,cy);圆心坐标为(rx,ry).
由圆心到三顶点距离相等,可以得到:
(rx-ax)^2+(ry-ay)^2=(rx-bx)^2+(ry-by)^2
(rx-ax)^2+(rx-ay)^2=(rx-cx)^2+(ry-cy)^2
以上两式消去ry,化简得:
C1(ay-cy)-C2(ay-by)+(ay-by)(cx-ax)rx-(ay-cy)(bx-ax)rx=0
其中C1=ax^2+ay^2-(bx^2+by^2);C2=ax^2+ay^2-(cx^2+cy^2).
同理消去rx,可以解出ry.
下面的代码中,Distance原为distance,但是G++中已经定义了distance,导致重名,编译报错。
感谢此文http://hi.baidu.com/%BF%C6%B9%A4ers/blog/item/9b4f13111fd9527acb80c4e9.html解惑。