HDU 1174

#include<stdio.h>
#include <math.h>
#define eps 1e-8
#define zero(x) (((x)>0?(x):-(x))<eps)
typedef struct point
{
double x,y,z;
}point;

int main()
{
    int T;
    double h1,r1,x1,y1,z1,tmp,s1,s2;
    double h2,r2,x2,y2,z2,x3,y3,z3;
    point tufei,jingcha,fangxiang,a,b;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%lf %lf %lf %lf %lf",&h1,&r1,&x1,&y1,&z1);
        tufei.x=x1,tufei.y=y1,tufei.z=(h1+z1-r1);
        scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&h2,&r2,&x2,&y2,&z2,&x3,&y3,&z3);
        jingcha.x=x2,jingcha.y=y2,jingcha.z=0.9*h2-r2+z2;
        fangxiang.x=x3,fangxiang.y=y3,fangxiang.z=z3;
        a.x=tufei.x-jingcha.x;
        a.y=tufei.y-jingcha.y;
        a.z=tufei.z-jingcha.z;


        b.x=fangxiang.y*a.z-fangxiang.z*a.y;
        b.y=fangxiang.z*a.x-fangxiang.x*a.z;
        b.z=fangxiang.x*a.y-fangxiang.y*a.x;


        s1=sqrt(b.x*b.x+b.y*b.y+b.z*b.z);
        s2=sqrt(fangxiang.x*fangxiang.x+fangxiang.y*fangxiang.y+fangxiang.z*fangxiang.z);
        tmp=s1/s2;
        if(tmp<=r1&&(fangxiang.x*a.x+fangxiang.y*a.y+fangxiang.z*a.z)>0)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值