若此段起始点为(stx,sty),速度为(vx,vy),设碰撞时间为t,则(stx+vx·t)²+(sty+vy·t)²=r² → stx²+vx²·t²+2·stx·vx·t+sty²+vy²·t²+2·sty·vy·t-r²=0 → (vx²+vy²)·t²+(2·stx·vx+2·sty·vy)·t+(stx²+sty²-r²)=0,我们设a=vx²+vy²,b=2·stx·vx+2·sty·vy,c=stx²+sty²-r²,则t=-b+sqrt(b²-4ac)/2a(舍去小解),再通过t算出某粒子在某段与圆下次碰撞的位置即可。

若与圆的碰撞点为(x,y),原速为(x1,x2),反弹后为(x2,y2),不难得出atan2(x2,y2)-atan2(x,y)=atan2(x,y)-atan2(x1,y1)(角相等),即atan2(x2,y2)=2·atan2(x,y)-atan2(x1,y1),设k=x2/y2,则k=tan(2·atan2(x,y)-atan2(x1,y1)),因为速度相同,所以x1²+y1²=x2²+y2²,设z=x1²+y1²,则y2²+k²·y2²=z → (k²+1)·y2²=z → y2=sqrt(x1²+y1²/k²+1),然后通过y2求出x2,需要注意的是,(-x2,-y2)在这里同样成立,我们可以通过带入一个点判断是否在圆内来判断取哪个解。

【某粒子在某次碰撞后vx,vy的变化】

设tt=max(t1,t2)(t1,t2分别为两段开始的时刻),若(x1,y1),(x2,y2)分别为tt时刻两粒子的坐标,(vx1,vy1),(vx2,vy2)分别为两段的速度,y为两粒子间距离的平方,y=((x1+vx1·t)-(x2+vx2·t))²+((y1+vy1·t)-(y2+vy2·t))² → y=((x1-x2)+(vx1-vx2)·t)²+((y1-y2)+(vy1-vy2)·t)²我们设xx=x1-x2,yy=y1-y2,vx=vx1-vx2,vy=vy1-vy2,那么y=(xx+vx·t)²+(yy+vy·t)² → y=xx²+vx²·t²+2·xx·vx·t+yy²+vy²·t²+2·yy·vy·t → y=(vx²+vy²)·t²+(2·xx·vx+2·yy·vy)·t+(xx²+yy²),再设a=vx²+vy²,b=2·xx·vx+2·yy·vy,c=xx²+yy²,然后求出最小值y3=4ac-b²/4a即为历史最近距离

【粒子a的某一段与粒子b的某一段的历史最近距离】

推荐:https://blog.csdn.net/lych_cys/article/details/50785713

【ZJOI2007】粒子运动的更多相关文章

  1. bzoj1094[ZJOI2007]粒子运动 计算几何

    1094: [ZJOI2007]粒子运动 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 658  Solved: 164[Submit][Status ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. bzoj-1096 1096: [ZJOI2007]仓库建设(斜率优化dp)

    题目链接: 1096: [ZJOI2007]仓库建设 Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L ...

  4. BZOJ 1096: [ZJOI2007]仓库建设 [斜率优化DP]

    1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4201  Solved: 1851[Submit][Stat ...

  5. 【BZOJ1060】[ZJOI2007]时态同步 树形DP

    [BZOJ1060][ZJOI2007]时态同步 Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3-.进行标号.电路 ...

  6. BZOJ 1093 [ZJOI2007] 最大半连通子图(强联通缩点+DP)

    题目大意 题目是图片形式的,就简要说下题意算了 一个有向图 G=(V, E) 称为半连通的(Semi-Connected),如果满足图中任意两点 u v,存在一条从 u 到 v 的路径或者从 v 到 ...

  7. 【BZOJ】【1059】【ZJOI2007】矩阵游戏

    二分图完美匹配/匈牙利算法 如果a[i][j]为黑点,我们就连边 i->j ,然后跑二分图最大匹配,看是否有完美匹配. <_<我们先考虑行变换:对于第 i 行,如果它第 j 位是黑点 ...

  8. bzoj1058: [ZJOI2007]报表统计

    set.操作:insert(u,v)在u后面插入v,若u后面已插入过,在插入过的后面插入.mingap求出序列两两之间差值的最小值.minsortgap求出排序后的序列两两之间的最小值.用multis ...

  9. 洛谷 P1169 [ZJOI2007]棋盘制作

    2016-05-31 14:56:17 题目链接: 洛谷 P1169 [ZJOI2007]棋盘制作 题目大意: 给定一块矩形,求出满足棋盘式黑白间隔的最大矩形大小和最大正方形大小 解法: 神犇王知昆的 ...

随机推荐

  1. 原生JS实现增加删除class

    <!DOCTYPE html> <html> <head> <style type="text/css"> .night-mode{ ...

  2. Centso7 简单优化(阿里云服务器)

    ##.下载常用包 # yum -y install wget net-tools screen lsof tcpdump nc mtr openssl-devel vim bash-completio ...

  3. 关于 flask 实现数据库迁移以后 如何根据创建的模型类添加新的表?

    在此之前 我们先说一下常规的flask运用第三方扩展来实现数据库的迁移的三个步骤以及每步的目的. 数据库的迁移的三个步骤:(cd 到run.py所在路径) python run.py db init ...

  4. Eclipse报错:An internal error has occurred. Widget is disposed

    win10家庭版报错. 右键Eclipse的快捷方式,在兼容性窗口的兼容模式中,将“以兼容模式运行这个程序”选项打对勾.选择win8就可以解决问题.

  5. 三、Docker网络

    一.查看8001端口是否开启处监听状态 netstat -apnl | grep 8001 二.使用brctl show可以看到虚拟机的网络关系 brctl show docker每新建一个conta ...

  6. jqprint控件使用

    /*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license //@ sourceMappingURL ...

  7. Jira的搭建

    一.环境准备 jira7.2的运行是依赖java环境的,也就是说需要安装jdk并且要是1.8以上版本,如下: java -version 除此之外,我们还需要为jira创建对应的数据库.用户名和密码, ...

  8. ImportError: No module named google.protobuf.internal

    下载: protobuf-3.3.0 设置路径:export PYTHONPATH=/gruntdata/lihaiyang/local/protobuf-3.3.0/python:$PYTHONPA ...

  9. cuda编程-矩阵乘法(2)

    采用shared memory加速 代码 #include <stdio.h> #include <stdlib.h> #include <math.h> #inc ...

  10. centOS7 下配置和启动maria数据库

    从最新版本的linux系统开始,默认的是 Mariadb而不是mysql! 使用系统自带的repos安装很简单: yum install mariadb mariadb-server systemct ...