hdu 1374 求三角形外接圆的半径

两种求三角形外接圆半径的方法:

方法一:

已知三角形的三边为a,b,c,a小于等于b小于等于c,

它的外接圆半径为 R=abc/( 4S)

S为三角形面积,可由海伦公式得到:S=√[p(p-a)(p-b)(p-c)]其中P是周长的一半

证明:对于任意三角形,其面积S=(1/2)*absinC

由正弦定理:a/sinA=b/sinB=c/sinC=2R

因,c/sinC=2R

故,R=c/2sinC

又由面积公式得:sinC=2S/ab

故,R=(c/2)/(2S/ab)

即,R=abc/4S

方法二:

根据余弦定理:c^2=a^2+b^2-2abcosC;根据正弦定理:c/sinC=2r;

又因为Sin^2C+cos^2C=1;将余弦定理和正弦定理带入此式可得出外接圆的半径;

#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
#define PI 3.141592653589793
double DI(double x1,double y1,double x2,double y2)
{
	 return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{
  double x1,y1,x2,y2,x3,y3,ans,r,s,p;
  while(cin>>x1>>y1>>x2>>y2>>x3>>y3)
  {
  	 double a,b,c;
  	 a=DI(x1,y1,x2,y2);
  	 b=DI(x1,y1,x3,y3);
  	 c=DI(x2,y2,x3,y3);
  	 p=(a+b+c)/2.0;
  	 s=sqrt(p*(p-a)*(p-b)*(p-c));//海伦公式求三角形面积
  	 r=(a*b*c)/(4.0*s);//利用三角形面积和外接圆半径
  	 ans=2*PI*r;
  	 cout<<setiosflags(ios::fixed)<<setprecision(2)<<ans<<endl;
  }
  return 0;
} 
时间: 2024-10-04 17:18:38

hdu 1374 求三角形外接圆的半径的相关文章

POJ 1329 Circle Through Three Points(求三角形的外接圆)

Circle Through Three Points 博客原文地址:http://blog.csdn.net/xuechelingxiao/article/details/40985403 题目大意: 给你三个不共线的三个点的坐标,求出过这三个点的圆的方程.写出方程的两种形式. 解题思路: 其实题目要求写出的方程的形式中包含圆心坐标跟半径,所以说关键问题其实就是求出过三点圆的圆心跟半径就OK了. 其实就是个求三角形外接圆的题目,最后加上一些蛋疼的输出控制就可以了. 代码写的有点麻烦,看到Dis

用三个函数分别实现求三角形,正方形,圆形面积(所有底高半径都由用户 输入);在主函数中,通过用户不同的选择分别进行调用;

/*2.用三个函数分别实现求三角形,正方形,圆形面积(所有底高半径都由用户输入):在主函数中,通过用户不同的选择分别进行调用:*/ #include <stdio.h>#define P 3.14double sanjiao(double di,double gao){ double mianji = (di * gao)/2 ; return mianji;} double zhengfangxing(double bian){ double mianji2 = bian*bian; ret

poj1266Cover an Arc(三角形外接圆)

链接 求出三角形的外接圆,通过圆心和半径可以知道这个圆的上下左右最远点,分别判断这个四个点跟弧的两端点A,B的关系,假如判断P点,弧内给出点为C,判断PC是否与AB相交即可判断出P是否在弧上. 精度问题 ceil-eps floor+eps 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<stdlib.h>

poj1329Circle Through Three Points(三角形外接圆)

链接 套模板 不知道有没有x,y=0情况,不过这种情况都按+号输出的. 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<stdlib.h> 6 #include<vector> 7 #include<cmath> 8 #include<queue> 9 #include&l

POJ1329 Circle Through Three Points(三角形外接圆)

题目链接: http://poj.org/problem?id=1329 题目描述: Circle Through Three Points Description Your team is to write a program that, given the Cartesian coordinates of three points on a plane, will find the equation of the circle through them all. The three poin

HDOJ 4720 Naive and Silly Muggles 三角形外接圆

当是钝角三角形时,就是最长边为直径的圆最小. 否则,求三角形的外接圆 Naive and Silly Muggles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 700    Accepted Submission(s): 451 Problem Description Three wizards are doing a exper

求三角形的面积

1.数学知识 求三角形的面积 三边的边长分别为:a, b, c; 公式:s = (a + b + c) / 2; area = √s * ( s - a) * (s - b) * (s -c); 2.源代码 #include<iostream> #include<cmath> using namespace std; bool TriangleArea(double a, double b, double c, double &area) { if(a + b <=

HDU 4006 求第k大数 treap

裸题,瞬秒.. #include <stdio.h> #include <iostream> #include <algorithm> #include <math.h> #include <vector> #include <set> #include <map> #include <queue> using namespace std; #define L(id) tree[id].ch[0] #defin

HDU 2091 空心三角形 --- 水题

/* HDU 2091 空心三角形 --- 水题 */ #include <cstdio> int main() { int kase = 0; char ch; int h, t; //h表示高 while (scanf("%c", &ch) == 1 && ch != '@'){ scanf("%d", &h); if (kase++){ printf("\n"); } getchar(); if