HDU-4793 Collision 计算几何 解方程

题意

给我们两个大小不同的圆的半径小圆是实心的 大圆是空心的 然后给我们一个小球的半径 小球的初始位置 还有飞碟在x方向和y方向上的速度 小球撞到内实心圆会能量不损失的反弹 问小球任何位置与大圆相交到完全出去的时间是多少

分析

几何题 如何知道时间呢
如果小球与大圆相切或是无交点 那么小球所求的时间是0
如果小球与内圆相切或是无交点 那么小球所求的时间就是在内圆的交点处的两个时间相减
如果小球与内院发生撞击 那么小球回反射 由于能量不递减 并且反射面是个球面 计算时间的范围也是个球面那么也就相当于求怎么进来的大圆 就会反射出一个不同向的相同时间的轨迹 那么我们求出求进来大圆的时间 和小球撞击内圆的时间 两个作差乘2就能得到解
那么问题其实就相当于如何求出交点处的时间点是多少

我们知道小球的运动轨迹以及方程
x′=x0+vx∗t
y′=y0+vy∗t
还知道两个圆的方程
x2+y2 = Rm2
x2+y2 = R2
由于初始位置,半径已知所以其中唯一的变量就是t
那么我们把运动轨迹方程带入到第一个圆的等式中 求得t 也就是小球经过第一个圆的交点处的t

(x0+vx∗t)2+(y+vy∗t)2 = (R+r)2

我们把运动轨迹方程代入到第二个圆的等式中 求得t也就是小球经过的第二个圆的交点处的t

(x0+vx∗t)2+(y+vy∗t)2 = (Rm+r)2

注意不同情况 我们需要不同的t去求结果
化简可得
(vx2+vy2)∗t2 +(2y∗vy+2x∗vx)∗t - (R+r)2 =0
(vx2+vy2)∗t2 +(2y∗vy+2x∗vx)∗t - (Rm+r)2 =0<script type="math/tex" id="MathJax-Element-26">0</script>

那么这里就会产生一个问题 如果球轨迹所在直线和内圆相交 但是方向相反 由于代入等式是个二次方的
会无视方向 这里就需要判断下

如果让球动一点 球与内圆圆心的距离边长了 那么就说明永不会相交 直接输出0.000

所以 根据不同情况 解方程即可

CODE

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const double eps = 1e-8;
double dis(double x1,double y1,double x2,double y2){return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{double Rm,R,r,x,y,vx,vy;while(~scanf("%lf%lf%lf%lf%lf%lf%lf",&Rm,&R,&r,&x,&y,&vx,&vy)){double ans,C = x*x+y*y-(R+r)*(R+r);double B = 2*y*vy+2*x*vx;double A = vy*vy+vx*vx;double jud = B*B-4*A*C;double x2 = x+vx,y2 = y+vy;if(dis(x2,y2,0,0)-dis(x,y,0,0)>eps){//判断是否反向puts("0.000");continue;}if(jud-0<=eps){puts("0.000");continue;}double t1 = (-B-sqrt(jud))/(2*A);double t2 = (-B+sqrt(jud))/(2*A);double C2 = x*x+y*y-(Rm+r)*(Rm+r);double jud2 = B*B-4*A*C2;if(jud2-0<=eps){printf("%.3lf\n",t2-t1);continue;}double t3 = (-B-sqrt(jud2))/(2*A);printf("%.3lf\n",fabs((t1-t3)*2));}return 0 ;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/425531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像傅里叶变换频谱分析

图像的傅里叶频谱特性分析 图像傅里叶频谱关于(/&#xff0c;/)的对称性 图像傅里叶频谱特性及其频谱图 傅里叶变换在图像处理中的应用

[剑指offer]面试题第[37]题[Leedcode][JAVA][第297题][二叉树列的序列化与反序列化][递归][BFS]

【问题描述】[中等] 序列化是将一个数据结构或者对象转换为连续的比特位的操作&#xff0c;进而可以将转换后的数据存储在一个文件或者内存中&#xff0c;同时也可以通过网络传输到另一个计算机环境&#xff0c;采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列…

Java学习笔记10-1——MyBatis

文章目录简介第一个Mybatis程序搭建环境导入Mybatis&#xff0c;编写配置文件编写代码测试了解一下官方文档的建议实现增删改查select、insert、update、delete使用map进行CRUD模糊查询配置解析(mybatis-config.xml)核心配置文件mybatis-config.xml环境配置&#xff08;environ…

时间

//Step1: 定义任务函数: 计算当前时间距离target时间的时间差var targetnew Date("2019/3/01 18:00:00");function calc(){//获得当前系统时间保存在变量now中var nownew Date();//用target-now&#xff0c;再除1000&#xff0c;获得秒差&#xff0c;保存在变量s中va…

图像的离散余弦变换

Discrete Cosine Transform&#xff0c;简写为DCT 函数的偶对称性使DCT只有实数域变换结果, 不再涉及复数运算&#xff0c;运算简单&#xff0c;费时少&#xff1b; 又保持了变换域的频率特性&#xff1b; 与人类视觉系统特性相适应&#xff1b; 得到了更加广泛的应用。 二维…

【匈牙利算法】【二分图匹配】【转载】趣写算法系列之--匈牙利算法

转载自&#xff1a;http://blog.csdn.net/dark_scope/article/details/8880547 【书本上的算法往往讲得非常复杂&#xff0c;我和我的朋友计划用一些简单通俗的例子来描述算法的流程】 匈牙利算法是由匈牙利数学家Edmonds于1965年提出&#xff0c;因而得名。匈牙利算法是基于H…

Rest Framework

目录导航 一、RESTful 规范 二、APIView 组件 三、序列化组件 四、认证组件 五、权限组件 六、频率组件 七、分页器组件 一、RESTful 规范 什么是RESTful规范&#xff1a; REST与技术无关&#xff0c;代表的是一种软件架构风格&#xff0c;REST是Representational State Transf…

[剑指offer][JAVA]面试题第[26]题[树的子结构][递归]

【问题描述】[中等] 输入两棵二叉树A和B&#xff0c;判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构&#xff0c; 即 A中有出现和B相同的结构和节点值。例如: 给定的树 A:3/ \4 5/ \1 2 给定的树 B&#xff1a;4 /1 返回 true&#xff0c;因为 B 与…

二分图最大匹配的König定理及其证明

出处:http://www.matrix67.com/blog/archives/116 二分图最大匹配的Knig定理及其证明 如果你看不清楚第二个字母&#xff0c;下面有一个大号字体版本&#xff1a; 二分图最大匹配的Knig定理及其证明 本文将是这一系列里最短的一篇&#xff0c;因为我只打算把Knig定理证了…

【插件介绍】Lombok

Lombok ​ Lombok项目是一个Java库&#xff0c;它会自动插入编辑器和构建工具中&#xff0c;Lombok提供了一组有用的注释&#xff0c;用来消除Java类中的大量样板代码。仅五个字符(Data)就可以替换数百行代码从而产生干净&#xff0c;简洁且易于维护的Java类。 使用步骤&…

图像增强概述

问题背景&#xff08;Background&#xff09; 曝光不足或过度的照片-需要增强处理 图像Fourier频谱看不清-需要增强处理 图像有雾-需要 增强处理 车牌识别系统 车牌识别预处理-车牌图像需要增强处理 人脸识别预处理-人脸图像需要增强处理 指纹识别预处理-指纹图像需要增强处理…

并查集入门

quick-find 时间复杂度 quick-union quick-find&#xfffc;时间复杂度&#xfffc;### quick-union&#xfffc; &#xfffc; 按SIZE合并 按秩合并 路径压缩 面试了解基本思想 做蓝色 写路径隔代压缩 转载链&#xff1a;https://liweiwei1419.gitee.io/leetcode-algo/

软件工程综合实践专题——个人博客作业1

这次作业老师要求我们读一段别人写的小程序&#xff0c;并写写自己的感悟。 emmmmmmmmmmmm 首先找到一段这样的代码就十分不容易...毕竟网上许多代码都是伪代码Orz 感谢室友提供的去年小学期大作业 首先&#xff0c;这段代码给我的第一印象就是&#xff1a;这好说歹说也算是个管…

POJ-3041 匈牙利算法 二分图最大匹配

踢以 给出多个点的坐标 有一种攻击 可以把一次干掉同一列的 或者干掉同一行的 求最少的攻击次数 肥西 由于问题是问选取最少的行和列干掉所有的陨石 可以把输入的r和c看成r和c之间有一条连边因为要实现干就干掉一行的也就是说 在同一行的是连到一个点上的 比如1 3 &#xf…

Java学习笔记10-2——MyBatis

文章目录MyBatis详细执行流程使用注解开发面向接口开发使用注解开发复杂查询多对一问题测试环境搭建按照查询嵌套处理&#xff08;子查询、嵌套查询&#xff09;按照结果查询&#xff08;联表查询、联合查询&#xff09;一对多问题环境搭建按照结果查询&#xff08;联表查询、联…

基于直方图处理的图像增强

灰度图像的直方图 •灰度级直方图是图像的一种统计表达&#xff0c;它反映了该图中 不同灰度级出现的统计概率。 •设图像具有L个灰度级&#xff0c;图像中像素点的个数为n&#xff0c;它 的第k个灰度级出现的次数为(k0,1,2,…,L-1) 通过直方图可以看出图像整体的性质 直方图…

[Leedcode][JAVA][第1014题][最佳观光组合][数组][暴力优化]

【问题描述】[中等] 给定正整数数组 A&#xff0c;A[i] 表示第 i 个观光景点的评分&#xff0c;并且两个景点 i 和 j 之间的距离为 j - i。一对景点&#xff08;i < j&#xff09;组成的观光组合的得分为&#xff08;A[i] A[j] i - j&#xff09;&#xff1a;景点的评分之…

NLayerAppV3--.net Core2实现的DDD分层架构

虽然每天的工作都是CURD、还是使用着传统的三层架构、使用着.net Framework&#xff0c;但是这并不能影响我学习DDD和.net core。 总是希望软件在应对复杂多变的场景时能够游刃有余&#xff0c;在解决问题时能够多一种选择。 很早就有关注大神dax.net的NLayerApp系列博文https:…

HDU - 4586 数学期望

题意 有一个骰子有n个面&#xff0c;掷到每一个面的概率是相等的&#xff0c;每一个面上都有相应的钱数。其中当你掷到某些面 一共m个面之一时&#xff0c;你有多掷一次的机会。问最后所得钱数的期望。 分析 数学期望是什么 数学期望就是一种加权平均值 什么意思 数学期望…