Преобразовать угол в градусах в вектор

Я занимаюсь программированием игр. FWIW I 'Я использую XNA, но яЯ сомневаюсь, что это актуально.

Я хотел бы преобразовать градусы в вектор направления (то есть X и Y) с величиной 1.

Мое происхождение (0,0) в левом верхнем углу.

Так что я'Мне нравится 0 градусов, чтобы преобразовать в [0, -1]

Я подумал, что лучший способ сделать это - взять мое определение «Север / Вверх» и повернуть его, используя матрицу, но это, похоже, не работает.

Вот кодекс ...

public class Conversion
{
    public static Vector2 GetDirectionVectorFromDegrees(float Degrees)
    {
        Vector2 North= new Vector2(0, -1);
        float Radians = MathHelper.ToRadians(Degrees);

        var RotationMatrix = Matrix.CreateRotationZ(Radians);
        return Vector2.Transform(North, RotationMatrix);
    }
}

... и вот мои юнит-тесты ...

[TestFixture]
public class Turning_Tests
{
    [Test]
    public void Degrees0_Tests()
    {
        Vector2 result = Conversion.GetDirectionVectorFromDegrees(0);
        Assert.AreEqual(0, result.X);
        Assert.AreEqual(-1, result.Y);
    }
    [Test]
    public void Degrees90_Tests()
    {
        Vector2 result = Conversion.GetDirectionVectorFromDegrees(90);
        Assert.AreEqual(1, result.X);
        Assert.AreEqual(0, result.Y);
    }
    [Test]
    public void Degrees180_Tests()
    {
        Vector2 result = Conversion.GetDirectionVectorFromDegrees(180);
        Assert.AreEqual(0, result.X);
        Assert.AreEqual(1, result.Y);
    }
    [Test]
    public void Degrees270_Tests()
    {
        Vector2 result = Conversion.GetDirectionVectorFromDegrees(270);
        Assert.AreEqual(-1, result.X);
        Assert.AreEqual(0, result.Y);
    }

}

Я подхожу к этому все неправильно? Должен ли я использовать матрицу? Я облажался и перевел градусы в радианы не в том месте?

Мы видели предположения, что это можно сделать с помощью кода, такого как:

new Vector2((float)Math.Cos(Angle), (float)Math.Sin(Angle));

... или иногда ...

new Vector2((float)Math.Sin(Angle), (float)Math.Cos(Angle));

Однако эти некажется, не работает

Может ли кто-нибудь указать мне правильный путь ... или, что еще лучше, дать мне какой-нибудь код, который приведет к тому, что 4 предоставленных модульных теста вернутся?

Спасибо заранее.

Ответы на вопрос(1)

Ваш ответ на вопрос