如何准备移动物体的路线

时间:2013-03-10 12:56:07

标签: c# winforms

我有一个带有地图作为背景的PictureBox。我在某些地方产生矩形,经过一些指示后,一个特定的矩形应该开始在"道路上移动。在地图上的背景。我有一些方法可以计算它的路线,但是经过几个问题和一些问题试图解决它们之后,我想把它扔出去并创造一种全新的方式来做到这一点。我的计划是有一个XML文件,其中包含每条道路的定义坐标,因此在输入道路名称后,矩形将在这些点内以指定的速度前进,并且在达到一个之后,它将直接进入另一个给定的。当它应该开启一条不同的道路时会出现一个小问题,但我认为我解决了这个问题,将所有十字路口添加到xml中,指定其坐标,如果是左侧或右侧,然后使用if左侧或对,我会寻找具有更高/更低X坐标的最近点。我有一个计算矩形相对于X轴和Y轴的运动的方法,这里是它的一部分,如果条件有四个。

if (points[passed].X > x_coordinate && points[passed].Y > y_coordinate)
        {
            Bx = points[passed].X;
            By = points[passed].Y;
            distanceForAlfaX = Bx - x_coordinate;
            distanceForAlfaY = By - y_coordinate;
            if (distanceForAlfaX <= 20 || distanceForAlfaY <= 20) speed = 5;
            if (distanceForAlfaX + distanceForAlfaY <= 15) passed += 1;
            alpha = (distanceForAlfaY / distanceForAlfaX);
            x_change = (int)(speed * (Math.Cos(alpha)));
            y_change = (int)Math.Sqrt(((speed * speed) + (x_change * x_change)));
            x_coordinate += x_change;
            y_coordinate += y_change;
        }

但是,正如我试图解决的那样(并且还在这里问了一个问题),矩形有时会移动到很远的地方,只到达给定的一个轴,而另一个则完全关闭。所以,我的问题是 - 当矩形在A点时,我需要通过某条路线让他到B点(不要在草地上移动),我该怎么做?所有矩形的位置将由Timer每两秒更新一次。我已经尝试过考虑其他解决方案,但总是我最终与上面一样,这就是为什么我在这里问,为了一些新的想法.. 最好的是...就像在一些点之间绘制一条不可见的线,矩形将精确地跟随这条线,但我没有看到这样做的方式..只是一个想法..

0 个答案:

没有答案