太阳系计划

时间:2016-01-20 20:30:11

标签: c# .net winforms

我想用太阳系行星制作一个程序。我有太阳和行星(水星,金星,地球......),我想让行星围绕太阳移动。

Here is the math part

其中

  X = R1 *cosα·Y = R2 *sinα
α= 1

我尝试像这样实现它

        double x;
        double y;


        x = (earth.Location.X - sun.Location.X) * Math.Cos(1);
        y = (earth.Location.Y - sun.Location.Y+30) * Math.Sin(1);

        earth.Location = new Point(Convert.ToInt32(x), Convert.ToInt32(y));

但是并没有真正起作用,它从形式上消失了,有人可以帮助我吗?

P.S:我为该代码使用计时器

1 个答案:

答案 0 :(得分:0)

请勿尝试根据旧位置计算新位置。相反,使用太阳的位置(固定,我假设),地球与太阳的距离和角度。想要移动地球时改变角度。

你需要这样的设置:

// angle
double alpha = 0;   // radians, so from zero to 2*PI is a circle.

// distance from the sun
double r1 = 200; // or whatever you decide
double r2 = 100;

如果给定alpha的值

,如何计算地球的位置
x = sun.Location.X + (r1 * Math.Cos(alpha));
y = sun.Location.Y + (r2 * Math.Sin(alpha));

接下来,您可能希望每隔几毫秒看一次alpha更改值,以便地球移动。