HDU5476 Explore Track of Point 几何题

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5476


题目大意:一个等腰三角形ABC,AB=AC,M是BC的中点,让在三角形中找出一点P,使得∠MPB+∠APC=∠MPC+∠APB,找出P的轨迹的长度。


分析:P的轨迹如下图:

HDU5476 Explore Track of Point 几何题_第1张图片

接下来直接计算就行了。


实现代码如下:

#include <cstdio>
#include <cmath>
using namespace std;
const int PI=acos(-1.0);
struct POINT
{
    double x,y;
}a,b,c,m;
double dist(POINT m,POINT n)
{
    return sqrt( (m.x-n.x)*(m.x-n.x)+(m.y-n.y)*(m.y-n.y) );
}
int main()
{
    int t,T=1;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lf%lf%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y);
        m.x=(b.x+c.x)/2,m.y=(b.y+c.y)/2;
        double am=dist(a,m);
        double r=dist(b,m)/dist(a,m)*dist(a,b);
        double tmp=atan(dist(a,b)/r);
        printf("Case #%d: %.4f\n",T++,am+2*tmp*r);
    }
    return 0;
}


你可能感兴趣的:(HDU5476 Explore Track of Point 几何题)