Chinaunix首页 | 论坛 | 博客
  • 博客访问: 350551
  • 博文数量: 122
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 1191
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 11:12
文章分类

全部博文(122)

文章存档

2010年(122)

我的朋友

分类: C/C++

2010-05-31 21:26:46

一、解题报告

 

二、问题描述

AD是△ABC的高,AE是△ABC的外接圆直径.则AE=AB*AC/AD;

怎么求AD呢,可以用叉积的方法,三角形的面积的2=ABXAC/BC

三、代码

 

#include<iostream>
#include<math.h>
using namespace std;
struct Point
{
    double x;
    double y;
};
const double PI=3.141592653589793;
//(B-A)X(C-A)
double Cross(const Point & A,const Point & B,const Point & C)
{
    return (B.x-A.x)*(C.y-A.y)-(C.x-A.x)*(B.y-A.y);
}
double Distance(const Point & A,const Point & B)
{
    return sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));
}
double GetHeight(const Point & A,const Point & B,const Point & C)
{
    double area=Cross(A,B,C);
    if(area<0)
        area=-area;
    return area/Distance(B,C);
}

int main()
{
    Point A;
    Point B;
    Point C;
    double R;
    while(scanf("%lf%lf%lf%lf%lf%lf",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y)!=EOF)
    {
        R=Distance(B,A)*Distance(C,A)/GetHeight(A,B,C);
        printf("%.2lf\n",R*PI);
    }
    return 0;
}


阅读(1866) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~