根据角度,速度和起始位置计算位置

时间:2020-11-09 12:49:02

标签: delphi math angle

虽然我已经在互联网上阅读了很多有关它的文章,但是我无法解决我的问题。

有一个2D平面图,其中x,y是屏幕的左上角。 我有一个点可以知道x,y的位置,方向(0到360度)和速度(以像素为单位,每步)。

根据我所阅读的内容,如果我想在一步之后计算该点的下一个位置,我将使用以下代码:

  self.px.X := round(self.px.X + self.speed * cos(direction));
  self.px.Y := round(self.px.Y + Self.speed * sin(direction));

出于测试目的,我使用10的速度值和90的方向。 通常,该点应该水平移动(甚至可以垂直移动),但是它以对角线移动,甚至不是45°。

有人知道我在做什么错吗?

1 个答案:

答案 0 :(得分:1)

正如Andreas Rejbrand所说(但我不知道如何将评论变成答案,对不起Andreas),解决方案是通过简单地调用degToRad函数来使用弧度数:

self.px.X := round(self.px.X + self.speed * cos(DegToRad(direction)));
self.px.Y := round(self.px.Y + Self.speed * sin(DegToRad(direction)));
相关问题