/*
爆头 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
方法:余弦定理,夹角;
*/

首先要知道向量的运算:向量的向量积。如果你这个不了解的话,那这题就做不解了。

先看一下定义:两个向量ab的向量积是一个向量,它的模为|a||b|sinθ(其中θ是ab的夹角),它的方向垂直于a与b所有决定的平面(既垂直于a又垂直于b),其指向按右手法则从a转向b来确定,记为a×b

接下来看下叉乘的几何意义:

看图就应该明白了吧,就是平行四边形的面积了。

接下来就是解题的思路了:

首先就是将题目进行抽象化:1.求出匪头中心的三维坐标

             2.求警头头中心的三维坐标

第二步就是求出两个向量的三维坐标:分别是:

 

第三步是:就是进行叉乘运算了。叉乘公式我在之前的博客中说过了,此处不再累述。

两个向量叉乘的就是这个平行四边形的面积了。但是所要求的就是上图中匪头到子弹向量的距离。

这便用到了叉乘的几何意义。只要把它除以上图中第一个向量的模便求出这个高即距离d;

最后一步但是求出d-r1是否小于等于0.小于则YES,否则NO.需要注要的问题:所有变量均为double型,除一个的.

ACM1174_爆头解题思路_空间三维坐标求点到直线的距离的更多相关文章

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

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

  2. HDU1174(空间点到直线的距离,用叉积)

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

  3. 记一次CTF比赛过程与解题思路-MISC部分

    前言 最近好久没更新博客和公众号了,有朋友问是不是在憋大招,但我不好意思说其实是因为最近一段时间太懒了,一直在当咸鱼- 意识到很久没更新这个问题,我是想写点什么的,但好像一直当咸鱼也没啥可分享的,最近 ...

  4. n皇后2种解题思路与代码-Java与C++实现

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了n皇后问题的解题思路,并分别用java和c++实现了过程,最后,对于算法改进 ...

  5. [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 ...

  6. 2019年美国大学生数学建模竞赛(MCM/ICM) E题解题思路

    这也许是我大学生涯最后一次参加数学建模比赛了吧,这次我们选择的问题是E题,以下是我们解题时候的一些思路.很多不易体现的项目产生对环境造成影响的指标可以由一些等同类型的指标来代替,如土地.森林植被被破环 ...

  7. [LeetCode] 53. Maximum Subarray 解题思路

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  8. MySQL-注释-Navicat基本使用-复杂查询练习题-解题思路-pymysql操作数据库-SQL注入-05

    目录 mysql语句注释 navicat 的基本使用 特色(个人总结) 与数据服务器建立连接 创建&打开数据库.表 创建 打开 修改操作表结构 修改表结构 查询修改操作表数据 基本语句对应的操 ...

  9. Z1. 广度优先搜索(BFS)解题思路

    /** BFS 解题思路 特点:从某些特定的节点开始,感染相邻的节点; 被感染的节点,再感染其相邻的节点,以此类推. 题目常见于数据结构包括 二维数组.树.图 **/ /** 1). 二维数组特定节点 ...

随机推荐

  1. libeXosip2(3) -- SIP messages and call control API

    SIP messages and call control API The SIP messages and call control API. More... Modules eXosip2 INV ...

  2. 转:TestLink1.9.3测试用例:Excel转换XML工具<二>实现代码

    TestLink1.9.3测试用例:Excel转换XML工具<二>实现代码 http://blog.csdn.net/candle806/article/details/7490599 以 ...

  3. Zedboard甲诊opencv图像处理(三)

    整个工程进展到这一步也算是不容易吧,但技术含量也不怎么高,中间乱起八糟的错误太烦人了,不管怎么样,现在面临了最大的困难吧,图像处理算法.算法确实不好弄啊,虽然以前整过,但都不是针对图像的. 现在的图像 ...

  4. codeforces C. Cd and pwd commands 执行命令行

    执行命令来改变路径 cd 并显示路径命令 pwd 一个节目的 抽样: input 7 pwd cd /home/vasya pwd cd .. pwd cd vasya/../petya pwd ou ...

  5. LVM管理

    一.步骤: 1.创建新的分区,并修改分区类型为8e 2.创建物理卷PV 3.将新建的PV添加到要扩展的VG中 4.用命令lvextend或lvresize来将新加入的PE添加到要扩展的LV中 5.用命 ...

  6. 【转】Cocoa中的位与位运算

    转自:http://www.tuicool.com/articles/niEVjy 介绍 位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常 ...

  7. WebApi实现跨域功能

    在配置文件的system.webServer节点中加入以下配置信息 <httpProtocol> <customHeaders> <add name="Acce ...

  8. AngularJs练习Demo10 ngInclude

    @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...

  9. Memcached的一些知识

    一.内存分配在Memcached内存结构中有两个非常重要的概念:slab 和 chunk,我们先从下图中对这两个概念有一个感性的认识: memcached内存结构Slab是一个内存块,它是memcac ...

  10. 不同频率下的pwm配置

    200k //PWM1 PWMPERDL1=0xb3; PWMPERDH1= 0x00; PWMCCNTL1=0x6B; PWMCCNTH1= ; PWMDBDY1=0x2B; //死区延时计时器 / ...