空间一般直线的方程是:
(x-x0)/a=(y-y0)/b=(z-z0)/c,
这是一条过(x0,y0,z0),方向矢量为{a,b,c}的直线.

假设已知点的坐标是A(e,f,g),过A点,且与{a,b,c}垂直的平面是,

a(x-e)+b(y-f)+c(z-g)=0,直线(x-x0)/a=(y-y0)/b=(z-z0)/c,与这个平面的交点是B,

再由两点的距离公式求出AB,即得.
 1 import java.util.Scanner;
2
3
4 public class Main {
5
6
7
8 public static void main(String[] args) {
9
10 Scanner cin = new Scanner(System.in);
11 int n = cin.nextInt();
12
13 while(n != 0){
14 float[] enemy = new float[5];
15 for(int i = 0; i < 5; i++){
16 enemy[i] = cin.nextFloat();
17 }
18
19 float[] soldier = new float[8];
20 for(int i = 0; i < 8; i++){
21 soldier[i] = cin.nextFloat();
22 }
23
24 boolean b = hit(enemy, soldier);
25 if(b){
26 System.out.println("YES");
27 }
28 else {
29 System.out.println("NO");
30 }
31 n--;
32 }
33 cin.close();
34 }
35
36 public static boolean hit(float[] enemy, float[] soldier){
37
38 //敌人头的中心 h1,r1,x1,y1,z1
39 float r1 = enemy[1];
40 //float[] centerEnemyHead = {enemy[2], enemy[3], enemy[0] - enemy[1] + enemy[4]};
41 //警察瞄准敌人时人头的中心 h2,r2,x2,y2,z2,x3,y3,z3
42 float h2 = soldier[0];
43 float r2 = soldier[1];
44 float height = h2 * 0.9f - r2 ;//实际高度 低 0.1
45
46 float[] direction = {soldier[5], soldier[6], soldier[7]};
47
48 float a = direction[0], b = direction[1], c = direction[2];
49 float x0 = soldier[2], y0 = soldier[3], z0 = soldier[4] + height;
50 float e = enemy[2], f = enemy[3], g = enemy[0] - enemy[1] + enemy[4];
51
52 float fenmu = a*a/b + b + c*c/b;
53 float fenzi = a*a*y0/b - a*x0 + a*e + b*f + c*c*y0/b - c*z0 +c*g;
54
55 float y = fenzi / fenmu;
56
57 float x = a*(y - y0)/b + x0;
58 float z = c*(y - y0)/b + z0;
59 //两点距离平方
60 float doubleR = (x-e)*(x-e) + (y-f)*(y-f) + (z-g)*(z-g);
61
62 if(doubleR > r1*r1)
63 return false;
64 else {
65 return true;
66 }
67
68 }
69 }

Java HdAcm1174的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

随机推荐

  1. Windows内核开发-4-内核编程基础

    Windows内核开发-4-内核编程基础 这里会构建一个简单但是完整的驱动程序和一个客户端,部署内核执行一些平时user下无法执行的操作. 将通过以下内容进行讲解: 1 介绍 2 驱动初始化 3 Cr ...

  2. MyEclipse无法打开jsp文件(打开是空白的),但是可以打开java文件

    转载: 解决MyEclipse使用时打开JSP发生"An error has occurred,See error log for more details"错误的解决方法这个问题 ...

  3. python + pytest基本使用方法(拓展库)

    一.测试钩子配置文件 import pytest# conftest.py 是pytest特有的本地测试配置文件;# 既可以用来设置项目级别的Fixture,也可用来导入外部插件,还可以指定钩子函数# ...

  4. 记一次.Net5接入支付宝SDK的小插曲

    由于业务需求,在项目里面要接入支付宝的支付功能,于是在github上找到了支付宝的官方sdk:https://hub.fastgit.org/alipay/alipay-easysdk 先说问题: 在 ...

  5. MySQL8.0.26安装与卸载

    一.安装 1.官网下载 百度进入官网,学习用社区版够了,我下的是压缩版点这直达下载页 据说8.X版本性能优化,比5.7版本快2倍! 接着,不登录直接下载 2.创建配置 下载完后,建议解压到一个没有中文 ...

  6. 忘记Apple ID密码,如何从iPhone/iPad上移除iCloud账号

    忘记Apple ID密码?不用担心!在本文中,我们将分享3种有效方法,即使您不知道密码,也可以轻松移除iPhone或iPad设备上的iCloud账号. 注意:移除iCloud 账号前请备份数据 在开始 ...

  7. 【动态规划】合唱队形 luogu-

    分析 做两遍最长上升子序列,在遍历一下,取最大值. AC代码 #include <bits/stdc++.h> using namespace std; #define ms(a,b) m ...

  8. Html模板引擎Handlerbars使用demo

    1.自定义demo <html> <head> <script src="./handlebars-v4.0.12.js"></scrip ...

  9. odoo12学习之javascript-----2

    用例子:Creating a new field widget 这可能是一个非常常见的用例:我们希望以非常具体(可能依赖于业务)的方式在表单视图中显示一些信息. 例如,假设我们要根据某些业务条件更改文 ...

  10. java构造器级简单内存分析

    java构造器的使用(基础篇) 构造方法也叫构造器,是创建对象时执行的特殊方法,一般用于初始化新对象的属性. 基本定义语法: 访问控制符 构造方法名([参数列表]){ 方法体 } 注:"访问 ...