hdu 1174 爆头
2012-08-03 17:19
330 查看
点击打开链接
给你站在三维空间的警察和土匪的身高,头部半径,坐标。还有警察枪的方向向量
判断是否可以爆头
补充知识:
差乘
向量a=(x1,y1,z1) b=(x2,y2,z2)
a
x(差乘) b=( y1z2 - z1y2 , z1x2 - x1z2 , x1y2-y1x2)
点到直线的距离可以用等面积做
B到直线AC的距离可以用
|AB差乘AC|/|AC|
给你站在三维空间的警察和土匪的身高,头部半径,坐标。还有警察枪的方向向量
判断是否可以爆头
补充知识:
差乘
向量a=(x1,y1,z1) b=(x2,y2,z2)
a
x(差乘) b=( y1z2 - z1y2 , z1x2 - x1z2 , x1y2-y1x2)
点到直线的距离可以用等面积做
B到直线AC的距离可以用
|AB差乘AC|/|AC|
#include"stdio.h" #include"math.h" int main() { int t; double h1,r1,x1,y1,z1; double h2,r2,x2,y2,z2; double x3,y3,z3; double x,y,z; double dis,a,b,c; scanf("%d",&t); while(t--) { scanf("%lf%lf%lf%lf%lf",&h1,&r1,&x1,&y1,&z1); scanf("%lf%lf%lf%lf%lf",&h2,&r2,&x2,&y2,&z2); scanf("%lf%lf%lf",&x3,&y3,&z3); z1=z1+h1-r1;//土匪头部Z轴坐标 z2=z2+h2*0.9-r2;//警察头部Z轴坐标 x=x1-x2;//土匪头部与警察头部连线向量 y=y1-y2; z=z1-z2; a=y*z3-z*y3;//手枪的方向向量与警察与土匪连线的差乘 b=z*x3-x*z3; c=x*y3-y*x3; dis=sqrt((a*a+b*b+c*c)/(x3*x3+y3*y3+z3*z3)); if(dis<=r1&&(x*x3+y*y3*z*z3>0)) r1处也可以写成r2,红色部分是判断土匪在警察面前而不是身后。。 printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- HDU 1174 爆头
- HDU 1174 爆头
- HDU 1174 爆头 [计算几何]
- HDU-1174--爆头---数学叉积
- hdu 1174 爆头(点到空间直线距离)
- HDU 1174 爆头
- HDU 1174 爆头 (计算几何)
- HDU 1174 爆头(几何---叉积)
- hdu 1174 爆头
- hdu1174-爆头
- HDU 1174 爆头(三维计算几何)
- hdu 1174:爆头(计算几何,三维叉积求点到线的距离)
- HDU 1174 爆头
- hdu1174-爆头
- hdu 1174 爆头
- HDU_1174——爆头,空间直线方程,直线到点的距离
- HDU 1174 爆头(三维空间中求点线距离)
- hdu_1174 爆头
- hdu 1174 爆头
- hdu 1174 爆头 (计算几何)