Java HdAcm1174
空间一般直线的方程是:(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 }
转载于:https://www.cnblogs.com/wanghui390/p/3614818.html
Java HdAcm1174相关推荐
- springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据
SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...
- Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几
Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...
- 在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...
- Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常
kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
- OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3
OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...
- Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid
Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...
- 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码
java开发必知必会之看源码,而看源码的第一步则是找到源码
- java基本类型转换,随记
java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...
最新文章
- Ibatis调用Oracle存储过程,以及返回Cursor结果集的问题
- 一则鬼故事:如果全世界程序员都消失了
- python进行数据分析,学习笔记 第8章(1)
- python 修改csv某一列_使用python更改CSV中的列值
- 判断CPU是大端还是小端
- Ubuntu12.04中如何让命令行路径变短
- html生成一维码,一维码条形码生成工具
- puttygen convert ppk file to xshell key file
- 华为机试题python版本
- 基于matlab使用Windrose函数绘制风矢量分布图(风玫瑰图)
- 如何干掉腾讯网迷你版
- Android开源框架:Retrofit
- ControllerRevision
- Java笔记07——类和对象
- man命令后带的数字含义
- 高德地图小程序步行路线显示_微信小程序----map路线规划
- Vulnhub靶机DC系列-DC-8
- 1116: [POI2008]CLO
- 电脑WIN XP蓝屏错误代码大全
- 【ANSYS】壳截面定义命令流