给定旋转和所需距离确定新位置

时间:2017-05-12 18:05:05

标签: c# direction

我有一个物体,我从二维空间中获取位置和旋转。

我需要在X和Y之间以相同的方向推进物体的位置总共12米,其旋转仅提供改变X和Y位置的方式。

这是我尝试过的失败的一个(坏)例子。

if (direction <= 45)
{
    float nx = Convert.ToSingle(direction * .13333333);
    float ny = 12 - nx;
} else if (direction <= 90)
{
    float ny = Convert.ToSingle((90 - direction) * .133333333);
    float nx = 12 - ny;
} else if (direction <= 135)
{
    float ny = Convert.ToSingle((135 - direction) * -.133333333);
    float nx = -12 - ny;
} else if (direction <= 180)
{
    float nx = Convert.ToSingle((180 - direction) * -.133333333);
    float ny = -12 - nx;
}

我甚至使用正确的配方或方法来获得所需的结果? 我有理由相信我需要Cos和Tan,但对于如何或何时使用它们有一些想法。

1 个答案:

答案 0 :(得分:2)

您必须将矢量视为三角形然后求解。答案并不太复杂。 https://www.mathsisfun.com/algebra/trig-finding-side-right-triangle.html

    //convert degrees into radians for the .NET trig functions
    direction *= Math.PI / 180;

    float nx = (float)(12 * Math.Cos(direction));
    float ny = (float)(12 * Math.Sin(direction));