前几天我问了一个如何实现让一个小球围绕另一个小球转的问题,也就是说我窗体上现有一个小球,然后第二个小球实现围绕第一个小球成顺时针旋转?第一个小球不动。WallesCai(我是老蔡,不是泡菜!) 给我了主要思路,可我的基础太差,还是有两点没有看明白。
首先列出WallesCai(我是老蔡,不是泡菜!) 给我的主要思路:----------------------
使用一个IMAGEBOX来加载要动的那个小球的图片(为了简单,不打算用画的了,反正就一个小图片速度不慢的)
然后使用TIMMER控件,触发时间为100,也就是每秒10次。
圆周运动,一共就需要三个参数:
一:园点,就是不动的那个小球的坐标,这个你肯定知道
二:半径,就是动的那个小球到不动的那个小球两者圆心之间的距离,这个你会算吧
三:圆周运动的角速度,就是围绕园点转动的频率。
定义两个全局变量:X0,Y0 '园点的坐标
定义一个全局变量:ALFA '当前角度
定义一个常量:W '角速度
定义一个常量:R '半径
定义一个常量:Pi '3.1415926535897932在TIMMER的时间中要做的事:一:计算当前角度:ALFA =(ALFA+W) mod (2*Pi)二:计算外面那个转的小球的位置计算:
  X= X0+ COS(ALFA)*R
  Y= Y0+ SIN(ALFA)*R三:改变小球的位置:
  IMAGE1.MOVE X,Y至于顺时针还是逆时针,完全看你的角速度是正还是负
------------------里面我有两点不明白:
1、W即角速度是怎么得来的?应该是多少?
2、计算当前角度:ALFA =(ALFA+W) mod (2*Pi) 这句话是什么意思,为什么用到了MOD,我没有看明白,如果是数学知识,也请随便在这里给我讲讲。谢谢大家!

解决方案 »

  1.   

    1.WallesCai式中的W不是角速度而是弧度(圆的一周的弧度值为2*Pi)
      真正的角速度W=(2*Pi)/T=(2*Pi)*f
            其中T是周期,f为频率。
      在这个问题里,
      要看你怎么定义他的这个常量,
      就是在每0.1秒的时间里你想让小球移动多少弧度。
     
    2.使用MOD是用在小球旋转多圈时令W只取0-2*Pi的值。
      其实不是必要的,在vb中函数
      Cos(number)
      number 参数可以是一 Double 或任何有效的数值
      表达式,表示一个以弧度为单位的角。