两小球围绕大球做大圆匀速运动,自始至终,小球球心与大球球心距离都是10,小球半径是1,球1沿着赤道运动,速度为1,初始位置在(0,10,0)位置,但运动方向未知从东半球开始还是西半球开始,球2沿着90度经线圈,速度为2,初始位置北极极点(0,0,10),运动方向亦是未知从东半球还是西半球开始。
问:1、这两球会相撞吗?
2、如果相撞,他们成立的条件是什么?各个运动方向要经过多少时间?他们的相撞一刹那坐标是多少? 

解决方案 »

  1.   

    用到的知识:
    1、数学,立体几何,这是主要的。
    2、物理,只要会v=s/t。
      

  2.   

    我认为不会相撞同样都是跑一个圆周  假设能撞 根据轨迹求解 只可能在 x=0 z=0 y=+-10的地方撞 也就是在相位为 PI/2 和 PI *3/2的地方。利用相位来计算     相撞的时刻 小球1 相位fai = PI/2 + n1 *PI 对应为 1 * t 
    小球2的相位就是 fai = PI/2 + n2 * PI 对应 2 * t  n2 和 n1为整数 这个方程组无解
    同理在相位为 3*PI/2的地方相撞 也是无解回帖比较少 考虑欠佳 希望指正
      

  3.   

    也就是总是方程会做成这样的形势
    n2 + 1.5 = 2n1 + 3的样子
    反正方程左边肯定是小数 方程右边肯定是整数 所以n1 n2无解 所以不可能
    N1 N2是想撞的时候 走过了多少圈。
      

  4.   

    VB VB vb好厉害.
    有才.
      

  5.   

     貌似用空间球坐标系比较好解吧。
    1.先建立球1和球2的球坐标运动方程,未知量为运行时间t,还有两球角速度关系系数设为w;
    2.再通过空间两点间距离公式求出两球随时间变化的球心距离d(d是t的函数),
       则两小球球面间最小距离是(d-1*2)---因小球半径为1,
       当两球碰撞时,有条件d=0可得一个方程;
    3.联立上面两个条件所得的方程,应该能解出t。
      a.如果t无解,说明不会相撞。
      b.如果t是一个表达式,就是说有无穷解,可以知道在什么条件下相碰。
      c.如果t唯一,则只有一次碰撞机会。
      这时通过运行时间t可以求出两球的坐标。上面说的只是大概的解题方向,具体答案还得靠达人,这种东西也就考研的时候琢磨过。上面的是数学解法,但耐心想一想它的整个运行过程,觉得他们不会碰一起。球1到90度经线的时候才有机会碰撞,但每次球1到90度经线的时候,球2总在南极点!!!
      

  6.   

    根据我的理解,两个垂直的园面只有两个交点,即1/4处和3/4处,只要算到达这两点的时间相同即可;
    (10*PI*(n+1/4)/1=(10*PI*(m+1/4)/2  或 (10*PI*(n+3/4)/1=(10*PI*(m+1/4)/2
    n、m为圈数,可以不一样,两球到达交点时的时间相同即可
    由此得解,4m=8n+1, 4m=8n+5, 无解,所以不会发生碰撞
      

  7.   

    相撞只能发生在2个点(0,10,0)(0,-10,0)
    球一跑n个1/2圈时候球二必须跑奇数个1/4圈才可能相撞
    假设球一跑了n圈则跑动距离 2n个1/2圈 ,球二距离8n个1/4圈,
    因为 8n 不能等于 奇数,所以不能相撞!可能考虑不周,这是我的计算结果!
      

  8.   

    球在t时刻转过的角度:a=vt/r球一的每一时刻坐标为:(10cos(t/10),10 sin(t/10),0)
                    或者:(-10cos(t/10),-10 sin(t/10),0)
    球二的每一时刻坐标为:(10cos(t/5),0,10 sin(t/5))
                    或者:(-10cos(t/5),0,-10 sin(t/5))二者要相撞只能在(10,0,0)和(-10,0,0)处接下来的事就有计算机来完成了
      

  9.   

    球在t时刻转过的角度:a=vt/r 
    球一的每一时刻坐标为:东半球开始:(10cos(t/10) ,10 sin(t/10) ,0) 
                    或者:西半球开始:(-10cos(t/10),-10 sin(t/10),0) 
    球二的每一时刻坐标为:东半球开始:(10cos(t/5)  ,0              ,10 sin(t/5)  ) 
                    或者:西半球开始:(-10cos(t/5) ,0              , -10 sin(t/5)) 
    二者要相撞只能在(10,0,0)和(-10,0,0)处 
    即sin(t/10)=0且,sin(t/5)=0   得:t=10×k×PI k=0,1,2,3,4 ……
    代入t得:10cos(t/5)=10,-10cos(t/5)=-10
    有四种可能组合:
    一东二东:10cos(t/10)= 10cos(t/5)=10    得:t=10×k×PI k=0,2,4,6,8 ……
    一东二西:10cos(t/10)= -10cos(t/5)=-10  得:t=10×k×PI k=1,3,5,7,9 ……
    一西二东:-10cos(t/10)= 10cos(t/5)=10   得:t=10×k×PI k=1,3,5,7,9 ……
    一西二西:-10cos(t/10)= -10cos(t/5)=-10 得:t=10×k×PI k=0,2,4,6,8 ……
    对应组合对应时间 t 会相撞
      

  10.   

    我认为不会相撞 同样都是跑一个圆周  假设能撞 根据轨迹求解 只可能在 x=0 z=0 y=+-10的地方撞 也就是在相位为 PI/2 和 PI *3/2的地方。 利用相位来计算    相撞的时刻 小球1 相位fai = PI/2 + n1 *PI 对应为 1 * t 
    小球2的相位就是 fai = PI/2 + n2 * PI 对应 2 * t  n2 和 n1为整数 这个方程组无解 
    同理在相位为 3*PI/2的地方相撞 也是无解 
      

  11.   

    上面的答案理解错误,下面是更正的:球在t时刻转过的角度:a=vt/r 
    球一的时刻t的坐标为:东半球开始:(10cos(t/10) ,10sin(t/10) ,0) 
                   或者:西半球开始:(-10cos(t/10),-10sin(t/10),0) 
    球二的时刻t的坐标为:东半球开始:(0           ,10cos(t/5)  ,10 sin(t/5)) 
                   或者:西半球开始:(0           ,-10cos(t/5) ,-10 sin(t/5)) 
    二者要相撞只能在(0,10,0)和(0,-10,0)处 
    即sin(t/10)=0且,cos(t/5)=0 得:t=5k×PI k=1,3,5,7,9 …… 
    代入t得:10cos(t/5)=-10,-10cos(t/5)=10 
    有四种可能组合: 
    一东二东:10sin(t/10)=10cos(t/5)=-10  得:t=5k×PI k=3,7,11,15,19 …… 
    一东二西:10sin(t/10)=-10cos(t/5)=10  得:t=5k×PI k=1,5, 9,13,17 …… 
    一西二东:-10sin(t/10)=10cos(t/5)=-10 得:t=5k×PI k=1,5, 9,13,17 …… 
    一西二西:-10sin(t/10)=-10cos(t/5)=10 得:t=5k×PI k=3,7,11,15,19 …… 
    对应组合对应时间 t 会相撞
      

  12.   

    设:
    R为大球半径
    r为小球半径
    t为经过的时间
    w为小球角速度
    则有以下不等式
    ((Sin(2wt))2 + (Cos(wt))^2 + (Cos(2wt)-Sin(wt))^2) < ((2*r)/(R+r))^2
    化简一下就是
    ((Sin(t)2 +  (Cos(t))^2 + (Cos(2t)-Sin(t))^2) < ((2*1)/(10+1))^2
    解此不等式,如果有解,则那个最小解即为所求,然后根据其求出坐标(有兴趣的朋友可以试着解一下)。但是,根据题意大概想一下的话,两个球的运动规律和自身的大小决定了它们不会相交。所以此不等式应该也没有解。
      

  13.   

    根据俩球的运动轨迹,他们可以相遇的地方有2个(10,0,0)和(-10,0,0)
    A(0,0,10)B(0,10,0)
    根据相遇地点可以分为2种情况;(A球在北极,B球在赤道)
    1)相遇在(10,0,0)。此种情况又可以各自选择运动方向分为4种情况。
    第一种:A和B全部往西(左西右动,均以A,B开始位置切线为准),以1/4圆周为1,时间T后相撞,那么A球运动的距离为T,设T=X+1。X必为4的倍数。B球运动的距离为2T,2T=2X+2;2X为4的倍数(一圈)。剩下2,为半圈,根本就到不了(10,0,0);
    第2种:A往西,B往东。对于A来说。时间T=X+1;B:2T=2X+2=M+3;M应该为4的倍数;2X,M都是4的倍数,他们相减是不可能为1的。所以也到不了。
    第3种:全部往东,可以和第一种类比,也是到不了的。
    第4种:A往东,B往西。时间T。A:T=X+3;B:2X+6=2X+4+2;也到不了。
    所以相遇不了。
    另一个相遇地点是一样的。
      

  14.   

    给定了球1和球2的坐标,(0,10,0)和(0,0,10),还不能确定坐标系。明显赤道为X-Y平面,球1(0,10,0)在Y轴上,但是球2的轨迹没确定,正是这个不确定的轨迹,球1和球2才有可能相撞。用球坐标系。X=R*cosθ*cos&,Y=R*cosθ*sin&,Z=R*sinθ;参考此文章
    http://www.cnki.com.cn/Article/CJFDTotal-GSGS200702028.htm   
    球心1的轨迹:(R*cosθ*cos(t/2*pi*R),R*cosθ*sin(t/2*pi*R),0)  θ=0,半径R是10
    同理,球心2的轨迹:(R*cos(t/2*pi*R-pi/2)*cos&,R*cos(t/2*pi*R-pi/2)*sin&,R*sinθ)  
    &=[0,2*pi];
    这只是球心,考虑球半径为1的话,就比较麻烦了。我只理解了这么些,其余的就请教高手吧。
      

  15.   

    我觉得出题的本意不是让你马上给出答案,而是给出一个解决问题的思路;
    首先定义一个小球的对象Ball,实现一个获取坐标的方法getPoint(int speed,int timenum),然后每秒循环计算两个小球的坐标之间的距离是否会小于2就行了,至于方法怎么实现那就要数学功底,这也是数学问什么重要的原因吧;
    然后结果是否会碰撞和时间都不是你要考虑的,那是计算机的事;
      

  16.   

    画了一张图  这里好像不能发图片
    http://www.xiaochuncnjp.com/bbs/viewthread.php?tid=922016&extra=page%3D1看图就会有思路了球1,2 在转第一圈的时候绝对不会碰撞, 但是感觉在n圈之后就有可能碰撞 因为第一圈之后 两个球产生了时间差   有空的时候模拟一下
      

  17.   

    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("不会相撞");
    }

    }
      

  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为整数),故不能相撞