我已经创建了网格布局。它显示100个球。最初,所有球都将处于随机位置。每25毫秒,一个球将在一个随机方向上移动某个单位(这对所有球来说都是常见的)。您可以在下图中看到它的作用:
尽管这些球的方向是随机的,但一段时间后,所有的球都朝着右下角移动。每次都会重复此行为。您可以在下图中看到它:
C#代码
Random random = new Random();
var direction = random.NextDouble() * 360;
var ballTranslate = child.RenderTransform.TransformPoint(new Point(0, 0));
var x = ballTranslate.X;
var y = ballTranslate.Y;
var x1 = x + (parm.Speed * Math.Cos(direction));
while (x1 < 0 || x1 > (parm.CellSize * parm.NoOfSplit))
{
direction = random.NextDouble() * 360;
x1 = x + (parm.Speed * Math.Cos(direction));
}
var y1 = y + (parm.Speed * Math.Sin(direction));
while (y1 < 0 || y1 > (parm.CellSize * parm.NoOfSplit))
{
direction = random.NextDouble() * 360;
y1 = y + (parm.Speed * Math.Sin(direction));
}
TranslateTransform myTranslate = new TranslateTransform();
myTranslate.X = x1;
myTranslate.Y = y1;
child.RenderTransform = myTranslate;
完整代码
答案 0 :(得分:8)
您似乎正在生成一个以度为单位的方向,并将其传递给Math.Sin,后者以弧度表示一个角度。 360 / 2PI = 57.3(大约),因此与其他较大的角度相比,您选择在0至0.3弧度之间的角度的可能性更高。
如果迭代次数如此之多,那么在某个地方也可能会有一个很小的舍入误差