我想用太阳系行星制作一个程序。我有太阳和行星(水星,金星,地球......),我想让行星围绕太阳移动。
其中
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:我为该代码使用计时器
答案 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
更改值,以便地球移动。