社区
语言基础/算法/系统设计
帖子详情
两球碰撞的计算,有兴趣的来看看
lnming
2009-07-29 09:44:10
加精
两小球围绕大球做大圆匀速运动,自始至终,小球球心与大球球心距离都是10,小球半径是1,球1沿着赤道运动,速度为1,初始位置在(0,10,0)位置,但运动方向未知从东半球开始还是西半球开始,球2沿着90度经线圈,速度为2,初始位置北极极点(0,0,10),运动方向亦是未知从东半球还是西半球开始。
问:1、这两球会相撞吗?
2、如果相撞,他们成立的条件是什么?各个运动方向要经过多少时间?他们的相撞一刹那坐标是多少?
...全文
2970
102
打赏
收藏
两球碰撞的计算,有兴趣的来看看
两小球围绕大球做大圆匀速运动,自始至终,小球球心与大球球心距离都是10,小球半径是1,球1沿着赤道运动,速度为1,初始位置在(0,10,0)位置,但运动方向未知从东半球开始还是西半球开始,球2沿着90度经线圈,速度为2,初始位置北极极点(0,0,10),运动方向亦是未知从东半球还是西半球开始。 问:1、这两球会相撞吗? 2、如果相撞,他们成立的条件是什么?各个运动方向要经过多少时间?他们的相撞一刹那坐标是多少?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
102 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dj2437
2010-03-13
打赏
举报
回复
标记下先晚上看
yttyhf2006
2010-01-20
打赏
举报
回复
[Quote=引用 33 楼 wzcgeorge_0907 的回复:]
转的角度没有告诉呀,
小球1好说,绕着赤道
小球2是绕着本初子午线吗?如果是的话就不会相撞吧,如果不是的话就有可能了
[/Quote]
这个应该是正解吧
ruoshui_sanqian
2010-01-18
打赏
举报
回复
假设是球1跑一周需要40,由此可知球2跑一周需要20,
因此球1跑到(0,10,0),(0,-10,0)的时间应该是0,20,40,60,80......{y=20*(n-1)}(n为整数)
球2跑到(0,10,0),(0,-10,0)的时间应该是5,15,25,35,45......{y=5+(n-1)*10}(n为整数)
当20*(n-1)=5+(n-1)*10时,得到n等于1.5,所以不满足 (n为整数),故不能相撞
lichy163
2009-08-17
打赏
举报
回复
别想的那么复杂,纯物理计算题啊,先设沿赤道运动的球的起始点是D点,设置一个坐标参数(未知数),列出运动方程(建议角速度计算),再列出另一个球的运动方程,两个球相遇的话一定是在赤道的,你就去计算不就好了嘛。
lnming
2009-08-09
打赏
举报
回复
没有更多的提示啦?
noove_001
2009-08-06
打赏
举报
回复
package test;
import java.text.DecimalFormat;
public class Ball {
private static final double pi = Math.PI;
private static final double CR = 10; //大球半径
private double plansAngle;//两球轨迹平面所成角度
private double startPoint;//起始位置的角度
private int speed;
private int forward;//顺时针-1,逆时针1
public Ball(double plansAngle,double startPoint,int speed,int forward){
this.plansAngle = plansAngle;
this.startPoint = startPoint;
this.speed = speed;
this.forward = forward;
}
//获取坐标
public double[] getPoint(long timenum){
DecimalFormat mydf = new DecimalFormat("#0.00");
double[] point = new double[3];
double nowPoint = startPoint+(forward*speed*timenum)/CR;//现在位置角度
point[0] = Double.parseDouble(mydf.format(CR*Math.cos(nowPoint)*Math.cos(plansAngle)));
point[1] = Double.parseDouble(mydf.format(CR*Math.sin(nowPoint)));
point[2] = Double.parseDouble(mydf.format(CR*Math.cos(nowPoint)*Math.sin(plansAngle)));
return point;
}
//获取两点之间距离
public static double getLine(double[] d1,double[] d2){
double l0 = Math.abs(d1[0]-d2[0]);
double l1 = Math.abs(d1[1]-d2[1]);
double l2 = Math.abs(d1[2]-d2[2]);
return Math.sqrt(l0*l0+l1*l1+l2*l2);
}
//获取一个循环所用时间
public static int gettimeOneCircle(int num,int speed){
return (int)(2*pi*CR*num/speed)+1;
}
//以慢的小球运动轨迹建立坐标的xy平面,该球初始角度为pi/2;
//快的小球的运动轨迹平面与xy平面所成角度为pi/2;该球起始角度为0;
public static void main(String[] args){
boolean ping = false;
Ball sb = new Ball(0,pi/2,1,1);
Ball bb = new Ball(pi/2,0,2,1);
//获取一个循环的时间,即慢的球走一圈,快的球走两圈,正好回到原来位置
int maxtime = gettimeOneCircle(1,1);
for(int i=0;i<maxtime;i++){
double[] d1 = sb.getPoint(i);
double[] d2 = bb.getPoint(i);
double rd = getLine(d1, d2);
if(rd<=2){
System.out.println(i+"秒相撞,距离"+rd);
System.out.println("sb"+d1[0]+"-"+d1[1]+"-"+d1[2]);
System.out.println("bb"+d2[0]+"-"+d2[1]+"-"+d2[2]);
ping = true;
break;
}
if(i%86400==0)
System.out.println(i/86400+"天未相撞");
}
if(!ping)
System.out.println("不会相撞");
}
}
zhoujk
2009-08-05
打赏
举报
回复
[Quote=引用 93 楼 kinsan 的回复:]
画了一张图 这里好像不能发图片
http://www.xiaochuncnjp.com/bbs/viewthread.php?tid=922016&extra=page%3D1
看图就会有思路了。。。
球1,2 在转第一圈的时候绝对不会碰撞, 但是感觉在n圈之后就有可能碰撞。。。 因为第一圈之后 两个球产生了时间差。。。 有空的时候模拟一下
[/Quote]
应该不会,找到两个球分别绕行一周的时间的最大公约数。如果在这个时间内还不能相撞,则永远不会相撞。
taick
2009-08-05
打赏
举报
回复
taick
2009-08-05
打赏
举报
回复
假设两个球为两个点,那么即会产生两个圆的平面,两个平面的交点就是可能相撞的坐标.但由于这两个球是有体积的,因此相撞的坐标会在两个圆里产生.
不知道怎么说,也不会算,只能凭想像.
lnming
2009-08-03
打赏
举报
回复
谢谢那么多位,根据你们的提示,我已经列出了方程,现在的问题是如何解方程了
JDR-Journey to DReam
2009-08-03
打赏
举报
回复
画了一张图 这里好像不能发图片
http://www.xiaochuncnjp.com/bbs/viewthread.php?tid=922016&extra=page%3D1
看图就会有思路了。。。
球1,2 在转第一圈的时候绝对不会碰撞, 但是感觉在n圈之后就有可能碰撞。。。 因为第一圈之后 两个球产生了时间差。。。 有空的时候模拟一下
越过越咸
2009-08-02
打赏
举报
回复
192.168.1.100
bzpengyukun
2009-08-02
打赏
举报
回复
理科没学好
Joey_zy
2009-08-02
打赏
举报
回复
这样的题目搞死人啊!不光要物理好,地理也不能差啊!不会!!!纯物理的还懂点!
iCan.club
2009-08-01
打赏
举报
回复
[Quote=引用 14 楼 paulpeath 的回复:]
两小球围绕大球做大圆匀速运动,自始至终,小球球心与大球球心距离都是10,小球半径是1,球1沿着赤道运动,速度为1,初始位置在(0,10,0)位置,但运动方向未知从东半球开始还是西半球开始,球2沿着90度经线圈,速度为2,初始位置北极极点(0,0,10),运动方向亦是未知从东半球还是西半球开始。
1、不会相撞。
2、理由:两运行轨迹的交点是(0,10,0),(0,-10,0).相撞问题转化为两球运行到这两点的时间重合即相撞,
容易计算球1在两点的等差时间序列分别为0、20、40、。。。。和10、30、50、。。。。,
球2在两点的等差时间序列分别为2.5、12.5、22.5、。。。。和7.5、17.7、27.5、。。。。,
显然没有相撞点.
[/Quote]
这个解法通俗易懂,呵呵,我喜欢
jupiterhunter
2009-08-01
打赏
举报
回复
数学,数学,数学!!!
wingcle5k
2009-08-01
打赏
举报
回复
两小球都是匀速的
每次环大球一圈的位置都固定
应该不会相交
!!!!!
让爱延续
2009-08-01
打赏
举报
回复
本身环境就三维旋转,再加上旋律体又是球体,不是点的哦,相互交融后好像就不能安照平面的情况去计算的了。程度相当有深度,找个数学专家吧。
lnming
2009-08-01
打赏
举报
回复
因为与速度有关,所以不可能用循环,要用数学知识,循环太费时间了。
lnming
2009-08-01
打赏
举报
回复
[Quote=引用 79 楼 noove_001 的回复:]
我觉得出题的本意不是让你马上给出答案,而是给出一个解决问题的思路;
首先定义一个小球的对象Ball,实现一个获取坐标的方法getPoint(int speed,int timenum),然后每秒循环计算两个小球的坐标之间的距离是否会小于2就行了,至于方法怎么实现那就要数学功底,这也是数学问什么重要的原因吧;
然后结果是否会碰撞和时间都不是你要考虑的,那是计算机的事;
[/Quote]
说出我的心声了,我需要的就是思路与证明过程,现在为何是用赤道与90度经线来做呢,是因为大家容易理解,实际的情况,是知道运动轨迹,但是要用最快的速度计算出是否会碰撞,如果会碰撞,那碰撞时两小球的坐标。所以,小球的位置不一定在以上的两个轨迹,可能在其他的轨迹上。
加载更多回复(81)
JavaScript 游戏开发:手把手实现
碰撞
物理引擎
年前我看到合成大西瓜小游戏火了,想到之前从来没有研究过游戏方面的开发,这次就想趁着这个机会
看看
JavaScript 游戏开发,从原生角度上如何实现游戏里的物理特性,例如运动、
碰撞
。虽然之前研究过物理相关的动画库...
几何算法:矩形
碰撞
和包含检测算法
大家好,我是前端西瓜哥。今天来讲讲几何算法中,比较经典的算法:矩形
碰撞
和包含检测算法。...如果两个图形的包围盒没有发生
碰撞
,那这两个图形一定不会发生
碰撞
,因为矩形的
碰撞
算法很简单,所以能够很好地优化性能。
抖音同款系列——Python告诉你两个小球在椭圆内部无限反弹会产生什么效果
爱刷抖音的朋友可能看过这样一个视频,知道答案是双曲线体或椭圆体,我也不知道这个叫法对不对,大家看效果图自己领会吧。 配文中作者通过一个问题暗示了小球初始速度不同可能是导致最终轨迹不同的关键原因,上文...
我对
计算
机感
兴趣
作文500字,我的
兴趣
爱好作文500字10篇
我的
兴趣
爱好作文500字10篇萝卜白菜,各...弹钢琴,当我心情不好时,我一定会做这两件事,就让我来介绍为什么我喜欢这两个
兴趣
吧!打
计算
机就是我的
兴趣
之一,因为可以跟在远方的亲人或朋友联络,可以玩许多的小游...
物理引擎学习04-GJK
计算
多边形之间的最近距离
只有两个多边形不相交,
计算
最近距离才有效。如果相交,则最近距离无效,但是可以使用EPA算法要
计算
碰撞
深度。本文的写作目的,主要是对GJK算法的理解和应用。对算法本身感
兴趣
的朋友,可以阅读源论文的文献。本系列...
语言基础/算法/系统设计
16,748
社区成员
33,247
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章