ACM1174_爆头解题思路_空间三维坐标求点到直线的距离
/*
爆头 Description
gameboy是一个CS高手,他最喜欢的就是扮演警察,
手持M4爆土匪的头。也许这里有人没玩过CS,有必
要介绍一下“爆头”这个术语:所谓爆头,就是子
弹直接命中对方的头部,以秒杀敌人。 现在用一个三维的直角坐标系来描述游戏中的三维空间
(水平面为xoy平面,z轴正方向是上方)。
假设游戏中角色的头是一个标准的球。告诉
你土匪的身高,头部半径,所站位置的坐标;
gameboy所控警察的身高,头部半径,
所站位置的坐标,以及枪头所指方向的单位向量。
gameboy所控警察所握的是M4,抢瞄准时枪膛中的子弹跟视线基本同线,
我们忽略它们的距离,就当成同线。由于土匪手持AK47,所以他是很嚣张地正立着。
而警察手持M4,正在瞄准,由于瞄准时身体微弯,视线从头心出发,
他头部的实际高度比正立时低10%。 你的任务就是,计算gameboy在这一刻扣下扳机,能否爆土匪的头。
注意:这里忽略子弹的直径和重力作用,也就是说子弹是无限小的,
弹道是一条笔直的射线,警察与土匪间没有障碍物。并且只要子弹擦到头部,
哪怕是边缘,也算爆头。 Input
测试数据的第一行有一个正整数T,表示有T组测试数据。
每组数据的第一行有五个实数,h1,r1,x1,y1,z1,
分别表示土匪的身高,头部半径以及所站的位置。
第二行有八个实数,h2,r2,x2,y2,z2,x3,y3,z3,
分别表示警察的身高,头部半径,所站位置,以及枪头所指方向的方向向量。 Output
每一组输入数据对应一行输出。如果能爆土匪的头,输出"YES",否则输出"NO"。 Sample Input
2 1.62 0.1 10.0 10.0 10.0 1.80 0.09 0.0 0.0 0.0 1.0 1.0 1.0 1.62 0.1 0.0 0.0 0.0 1.80 0.09 10.0 10.0 10.0 -1.0 -1.0 -1.0 Sample Output
YES YES
方法:余弦定理,夹角;
*/
首先要知道向量的运算:向量的向量积。如果你这个不了解的话,那这题就做不解了。
先看一下定义:两个向量a与b的向量积是一个向量,它的模为|a||b|sinθ(其中θ是a与b的夹角),它的方向垂直于a与b所有决定的平面(既垂直于a又垂直于b),其指向按右手法则从a转向b来确定,记为a×b
接下来看下叉乘的几何意义:

看图就应该明白了吧,就是平行四边形的面积了。
接下来就是解题的思路了:
首先就是将题目进行抽象化:1.求出匪头中心的三维坐标
2.求警头头中心的三维坐标
第二步就是求出两个向量的三维坐标:分别是:
第三步是:就是进行叉乘运算了。叉乘公式我在之前的博客中说过了,此处不再累述。
两个向量叉乘的就是这个平行四边形的面积了。但是所要求的就是上图中匪头到子弹向量的距离。
这便用到了叉乘的几何意义。只要把它除以上图中第一个向量的模便求出这个高即距离d;
最后一步但是求出d-r1是否小于等于0.小于则YES,否则NO.需要注要的问题:所有变量均为double型,除一个的.
ACM1174_爆头解题思路_空间三维坐标求点到直线的距离的更多相关文章
- hdu 1174:爆头(计算几何,三维叉积求点到线的距离)
爆头 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...
- HDU1174(空间点到直线的距离,用叉积)
爆头 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...
- 记一次CTF比赛过程与解题思路-MISC部分
前言 最近好久没更新博客和公众号了,有朋友问是不是在憋大招,但我不好意思说其实是因为最近一段时间太懒了,一直在当咸鱼- 意识到很久没更新这个问题,我是想写点什么的,但好像一直当咸鱼也没啥可分享的,最近 ...
- n皇后2种解题思路与代码-Java与C++实现
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了n皇后问题的解题思路,并分别用java和c++实现了过程,最后,对于算法改进 ...
- [LeetCode] 234. Palindrome Linked List 解题思路
Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O(n) time ...
- 2019年美国大学生数学建模竞赛(MCM/ICM) E题解题思路
这也许是我大学生涯最后一次参加数学建模比赛了吧,这次我们选择的问题是E题,以下是我们解题时候的一些思路.很多不易体现的项目产生对环境造成影响的指标可以由一些等同类型的指标来代替,如土地.森林植被被破环 ...
- [LeetCode] 53. Maximum Subarray 解题思路
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- MySQL-注释-Navicat基本使用-复杂查询练习题-解题思路-pymysql操作数据库-SQL注入-05
目录 mysql语句注释 navicat 的基本使用 特色(个人总结) 与数据服务器建立连接 创建&打开数据库.表 创建 打开 修改操作表结构 修改表结构 查询修改操作表数据 基本语句对应的操 ...
- Z1. 广度优先搜索(BFS)解题思路
/** BFS 解题思路 特点:从某些特定的节点开始,感染相邻的节点; 被感染的节点,再感染其相邻的节点,以此类推. 题目常见于数据结构包括 二维数组.树.图 **/ /** 1). 二维数组特定节点 ...
随机推荐
- CentOS6.5下安装wine
系统信息: Centos 6.5 i386 GUN/Linux 1. 首先安装一个epel rpm -ivh http://mirrors.yun-idc.com/epel/6/i386/epel-r ...
- Java集合的实现细节—Set集合和Map集合
Set:代表无序.不可重复的集合 Map:代表key-value对集合,也称为关联数组 从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展. 1.Set集合和Map集合的 ...
- C++简介
本文仅用于学习交流,转载请注明:http://www.cnblogs.com/mxbs/p/6266466.html Hello,C++ World! 简介: C++融合了3中不同的编程传统:C语言 ...
- jquery Tabs选项卡切换
效果: HTML部分: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- 浏览器内核Trident/Gecko/WebKit/Presto
“浏览器内核”主要指渲染引擎(Rendering Engine),负责解析网页语法(如HTML.JavaScript)并渲染.展示网页.因此,所谓的浏览器内核通常也就是指浏览器所采用的渲染引擎, 渲染 ...
- spring Scurity终于测试OK了,复杂的功能还待深入研究!发布出来一起探讨吧!
spring Scurity终于测试OK了,复杂的功能还待深入研究!发布出来一起探讨吧! 就是因 为研究它,我的个天啦!头都大了一圈!还待修改完整版!我的目标不是每个项目拿到它就能使用!到时再说啦.. ...
- 如何单独编译Android源代码中的模块
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6566662 第一次下载好Android源代码工 ...
- HDU 4760 Good FireWall 完好Trie题解
本题乍看像是线段树之类的区间操作,只是由于仅仅是须要查找ip的前缀,故此事实上是使用Trie来做. 挺高难度的Trie应用,做完这道题之后说明Trie功力有一定火候了. 这里的Trie使用到了Dele ...
- 解决System.Data.SQLite兼容32位和64位问题
将当前说明文档的目录下的x64.x86目录和System.Data.SQLite.dll文件复制到您的应用程序根目录中(注意更新引用,引用System.Data.SQLite.dll即可,两目录中的不 ...
- SpinLock(自旋锁)
SpinLock(自旋锁) SpinLock 结构是一个低级别的互斥同步基元,它在等待获取锁时进行旋转. 在多核计算机上,当等待时间预计较短且极少出现争用情况时,SpinLock 的性能将高于其他类型 ...