球体弹性碰撞位置和速度计算算法
#本人原创,费了不少功夫计算推导公式,通过验证非常完美
#两球的位置和速度,R为半径,这里设质量一样,容易加上不同的质量和半径
def collide(loc1,loc2,sp1,sp2):
x,y=loc1
x2,y2 = loc2
dlx,dly = x-x2,y-y2
dx,dy = sp1
dx2,dy2 = sp2
dvx,dvy = dx-dx2,dy-dy2
#假如当前“碰撞过度”则回到之前的位置再求相切时的位置
if dlx**2+dly**2<R**2:
x,y = x-dx , y-dy
x2, y2 = x2-dx2, y2-dy2
dlx, dly = x-x2, y-y2
b = R**2*(dvx**2+dvy**2)-(dlx*dvy - dly*dvx)**2
#计算碰撞的时间
p = -dlx*dvx -dly*dvy+ math.sqrt(b)
p2 =-dlx*dvx -dly*dvy - math.sqrt(b)
if dvx**2 + dvy**2==0:
t=1
#因为会相切两次所以有两个解,取较小一个
else:
temp = min((abs(p),abs(p2)))
t = (temp)/(dvx**2 + dvy**2)
#碰撞时的位置
loc1 = x + t*dx , y +t*dy
loc2 = x2 + t*dx2, y2 + t*dy2
## print(math.sqrt((loc1[1]-loc2[1])**2+(loc1[0]-loc2[0])**2))
#碰撞后的速度改变,求动量交换
if dly==0:
ey=0
ex=dvx
else:
k = dlx/dly
ey=(dvy+k*dvx)/(1+k*k)
ex=k*ey
sp1 = dx -ex, dy-ey
sp2 = dx2+ex, dy2 + ey
return [loc1,loc2 ,sp1, sp2]
转载于:https://www.cnblogs.com/chgq/p/11105978.html
球体弹性碰撞位置和速度计算算法相关推荐
- java 弹性碰撞_球体弹性碰撞位置和速度计算算法
#本人原创,费了不少功夫计算推导公式,通过验证非常完美 #两球的位置和速度,R为半径,这里设质量一样,容易加上不同的质量和半径 def collide(loc1,loc2,sp1,sp2): x,y= ...
- 高、低成本MEMS惯导系统姿态、位置、速度更新算法的对比
高.低成本MEMS惯导系统姿态.位置.速度更新算法的对比 一.高成本MEMS惯导系统姿态.位置.速度更新算法 1.速度更新 2.位置更新 3.姿态更新 4.程序仿真及实验结果 4.1 主函数 4.2 ...
- 自车坐标系下的物体相对和绝对位置和速度计算
自车坐标系与绝对坐标系的速度位置换算原理 自车坐标系 坐标系--右-前-天坐标(RFU) 坐标系--前-左-上(FLU) 位置换算 速度换算 示意图 情形一 情形二 小结 参考 自车坐标系 自车坐标系 ...
- Apollo星火计划学习笔记——Apollo速度规划算法原理与实践
文章目录 1. 速度规划算法总体介绍 1.2 不同场景下的ST图 1.2.1 主车向前匀速行驶 1.2.2 主车先向前匀速行驶,后停车 1.2.3 主车跟随前车行驶 1.2.4 主车跟随前车刹停 1. ...
- 滑膜观测器物理意义_PMSM扩展状态滑模观测器和转子位置和速度估算.PDF
第 12 卷 第 5期 电 机 与 控 制 学 报 Vo l12 No5 2008年 9 月 EL EC TR IC MA CH IN E S AND CON TROL Sep. 2008 PM SM ...
- 深度学习模型参数量/计算量和推理速度计算
作者|龟壳 来源 | 知乎 地址 | https://zhuanlan.zhihu.com/p/376925457 本文仅作学术分享,若侵权请联系后台删文处理 本文总结了一些关于模型参数量计算以及推理 ...
- 电机高频注入原理_永磁同步电机转子位置与速度估算的新方法,精度好,性价比高...
北京航空航天大学惯性技术重点实验室.北京市高速磁悬浮电机技术及应用工程技术研究中心的研究人员赵远洋.韩邦成.陈宝栋,在2019年第15期<电工技术学报>上撰文指出(论文标题为"基 ...
- 增量式编码器定时器配置和速度计算的处理方法
MCU定时器的CNT寄存器一般是16位的,使用定时器的编码器正交接口功能,计数周期有两种配置方法: 1.计数周期与编码器脉冲数相等 TIM_TimeBaseStructure.TIM_Period = ...
- 电机位置、速度检测方法大合集
本篇我们学习一些常用的电动机的位置.速度检测方法,有的通过电磁感应效应检测.有的通过光电转换后检测.有的通过霍尔元器件检测,等等.下面我们就一一来讲解. 1)光电编码器 光电编码器可以把角度或者速度转 ...
- 串级PID 位置环+速度环
1位置环和速度环的串级pid,首先要记住,位置环的输出是速度环的输入,最后控制输出为速度环的输出. 速度环的PID控制器 代码如下 float Velocity_KP_A=400,Velocity_K ...
最新文章
- 美多商城之购物车(展示商品页面简单购物车)
- linux服务器都有注册表吗,NT服务器的注册表结构介绍
- Android 获取天气数据
- 草稿 datagridview的显示与修改
- 以下c语言程序片段用于估测cpu的cache参数,优酷【C/C++类】:笔试题目1(最全)...
- mac maven安装与配置镜像
- pdf转换成word后有文字叠加_PDF转换成Word后进行处理
- 用root登录亚马逊云
- php(magento),magento在本地php7上安装方法
- CSS选择器的优先级是怎么定义的?
- linux atop日志查看,A - atop - 监控Linux系统资源与进程的工具 - 《Linux命令大全搜索工具(旧版)》 - 书栈网 · BookStack...
- chai.js中文文档
- 一篇文章带你了解Nodejs
- Java基础 -> Java死锁如何避免?
- GBase 8a GDCA认证之GBase 8a初认识
- 思科设备DHCP服务器option 82选项与DHCP中继代理的问题
- LeeCode 1579 并查集
- CSS——过渡与动画
- php 海关对接 进口商品_海关179对接联调-在线咨询-210112
- 2019校招春招面试问题汇总