pro:给定警察的射击位置,设计方向,敌人的位置,敌人的头部半径,问子弹是否可以射到头部。

sol:即问头部中点到子弹射线的距离是否小于等于头部半径。

和二维的点到直线一样的操作。 det/dot; 用平行四边形面积/底。 那么唯一的问题就是三维向量的det怎么求。 如图:

由于是射线,还要判定是否同向。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
struct point3
{
double x,y,z;
point3(){}
point3(double xx,double yy,double zz):x(xx),y(yy),z(zz){}
};
point3 operator -(point3 a,point3 b){ return point3(a.x-b.x,a.y-b.y,a.z-b.z);}
point3 A,B,C;
double det(point3 a,point3 b){
double x=a.x*b.y-a.y*b.x;
double y=a.x*b.z-a.z*b.x;
double z=a.y*b.z-a.z*b.y;
return sqrt(x*x+y*y+z*z);
}
double dot(point3 a,point3 b){
return a.x*b.x+a.y*b.y+a.z*b.z;
}
int main()
{
int T; double H1,H2,R1,R2;
scanf("%d",&T);
while(T--){
scanf("%lf%lf%lf%lf%lf",&H1,&R1,&A.x,&A.y,&A.z);
scanf("%lf%lf%lf%lf%lf",&H2,&R2,&B.x,&B.y,&B.z);
scanf("%lf%lf%lf",&C.x,&C.y,&C.z);
A.z+=H1-R1; B.z+=H2*0.9-R2;
double ans=det(A-B,C)/sqrt(dot(C,C));
if(dot(A-B,C)>=&&ans<=R1) puts("YES");
else puts("NO");
}
return ;
}

HDU - 1174:爆头 (三维平面点到射线的距离)的更多相关文章

  1. hdu 1174:爆头(计算几何,三维叉积求点到线的距离)

    爆头 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  2. HDU 1174 爆头(计算几何)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1174 解题报告:就是用到了三维向量的点积来求点到直线的距离,向量(x1,y1,z1)与(x2,y2,z ...

  3. csu 1503: 点到圆弧的距离

    1503: 点到圆弧的距离 Time Limit: 1 Sec  Memory Limit: 128 MB  Special JudgeSubmit: 614  Solved: 101[Submit] ...

  4. poj1584(判断凸包+求点到线段的距离)

    题目链接:https://vjudge.net/problem/POJ-1584 题意:首先要判断凸包,然后判断圆是否在多边形中. 思路: 判断凸包利用叉积,判断圆在多边形首先要判断圆心是否在多边形中 ...

  5. CSU 1503: 点到圆弧的距离(计算几何)

    题目描述 输入一个点 P 和一条圆弧(圆周的一部分),你的任务是计算 P 到圆弧的最短距离.换句话 说,你需要在圆弧上找一个点,到 P点的距离最小. 提示:请尽量使用精确算法.相比之下,近似算法更难通 ...

  6. POJ1584 判断多边形是否为凸多边形,并判断点到直线的距离

    求点到直线的距离: double dis(point p1,point p2){   if(fabs(p1.x-p2.x)<exp)//相等的  {    return fabs(p2.x-pe ...

  7. ArcGIS 点到直线的距离

    /****点到直线的距离*** * 过点(x1,y1)和点(x2,y2)的直线方程为:KX -Y + (x2y1 - x1y2)/(x2-x1) = 0 * 设直线斜率为K = (y2-y1)/(x2 ...

  8. csuoj 1503: 点到圆弧的距离

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 1503: 点到圆弧的距离 时间限制: 1 Sec  内存限制: 128 MB  Speci ...

  9. LA 3027 Corporative Network 并查集记录点到根的距离

    Corporative Network Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu [S ...

随机推荐

  1. Eclipse导入Oracle/MySQL数库驱动包教程

    在操作数据库时除了import相关的SQL类外,还得在项目中导入数据库的驱动才能连接和操作数据库. 而数据库驱动jar包在默认Java的lib里是没有的,要自己到官网下载导入:本教程以Oracle为例 ...

  2. git rebase commit 信息处理

    pick:正常选中 reword:选中,并且修改提交信息: edit:选中,rebase时会暂停,允许你修改这个commit(参考这里) squash:选中,会将当前commit与上一个commit合 ...

  3. CentOS最小安装无法使用ifconfig命令

    问题描述: 1.先解决联网问题,详情查看:http://www.cnblogs.com/zhi-leaf/p/5983470.html. 2.执行net-tools,执行命令 yum install ...

  4. 使用ES6的reduce函数,根据key去重

    最近很着迷于ES6的函数,让代码变得更优雅.ES6里的reduce函数,平时用的不是特别多,真正用起来发现还是挺好用的. 想要实现的效果为: 原数组: let rawArr = [{id:'123'} ...

  5. laravel中的注册页面

    <?php namespace App\Http\Controllers; use App\User; use Illuminate\Http\Request; class RegisterCo ...

  6. c语言亲缘线程通过管道通信一些疑问

    亲缘线程在使用管道时,发现第一次使用管道进行进行通信完全正常(./a.out 1),但当重新运行并使用新管道文件时候出现数据无法读取的问题(./a.out 2)(./a.out 3),甚至出现子线程部 ...

  7. chrome console 阻止 Navigated to

    阻止如图 chrome 如图信息

  8. WPF 创建自定义控件及自定义事件

    1 创建自定义控件及自定义事件 /// <summary> /// 演示用的自定义控件 /// </summary> public class ExtButton : Butt ...

  9. 通过改变unity中物体的alpha值实现若隐若现的效果

    RawImage logo = mainLogo.transform.FindChild("back/headBack/Logo").GetComponent<RawImag ...

  10. Python Django 之 直接执行自定义SQL语句(二)

    转载自:https://my.oschina.net/liuyuantao/blog/712189 一般来说,最好用 Django 自带的模型来实现这些操作.这里仅仅只是为了学习使用原始 SQL 而做 ...