我创建了一个网格布局.它显示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;
Run Code Online (Sandbox Code Playgroud)
完整代码
您似乎以度数生成方向并将其传递给Math.Sin,它以弧度为单位.360/2PI = 57.3(大约),所以你比其他更大的角度更有可能选择0到0.3弧度之间的角度.
当你有这么多次迭代时,某些地方也可能出现一个小的舍入错误
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |