我想制作一个程序,模拟在太阳系中移动的行星,但某个行星正在离开轨道。
我试图在太阳周围移动行星。
planetDay
是地球上一天报告的天数
行星不跟踪轨道,我认为这是问题,但我不确定,当我修改行星的位置时,我将X和Y转换为int,当我这样做时,我将这些数字舍入
private void MovePlanets()
{
double x;
double y;
int k = 0;
foreach (PictureBox pic in pictureBox1.Controls)
{
if (pic.Name == "sun")
{
continue;
}
x = sun.Location.X + (rectangle[k].Width / 2 * Math.Cos(planetDay[k] + alpha));
y = sun.Location.Y + (rectangle[k].Height / 2 * Math.Sin(planetDay[k] + alpha));
pic.Location = new Point(Convert.ToInt32(x), Convert.ToInt32(y));
k++;
if (k == 8)
{
k = 0;
}
}
alpha += 0.1;
}
这里我生成了用于绘制椭圆的矩形
private void Orbit()
{
int x1 = 30;
foreach (PictureBox pic in pictureBox1.Controls)
{
if (pic.Name == "sun")
{
continue;
}
Rectangle r = new Rectangle
(
pic.Location.X + pic.Size.Width / 2,
(sun.Location.Y + sun.Size.Width / 2) - x1,
((sun.Location.X + sun.Size.Width / 2) - (pic.Location.X + pic.Size.Width / 2)) * 2,
x1 * 2
);
rectangle.Add(r);
x1 += 36;
}
}
在这里我绘制省略号
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Pen p = new Pen(Color.White, 1f);
foreach (Rectangle rec in rectangle)
{
e.Graphics.DrawEllipse(p, rec);
}
}
有人可以帮我解决这个问题吗?