繁体   English   中英

C#向量,角度和旋转

[英]C# Vectors, Angles and Rotation

我有一艘有位置,目的地和旋转的飞船。 当有新的目的地时,它将一直向前移动,同时顺时针旋转,直到面向目的地。

码:

public void Move()
{
    Vector requiredDirection = destination - origin;
    requiredDirection.Normalize();
    Vector directionNow = new Vector((float)Math.Cos(rotation), (float)Math.Sin(rotation));

    float x = Math.Abs(requiredDirection.X - directionNow.X);
    float y = Math.Abs(requiredDirection.Y - directionNow.Y);

    if ((x > rotationSpeed) || (y > rotationSpeed))
    {
        rotation += rotationSpeed;
    }

    shipPosition += directionNow * speed;
}

我的问题是,这只船只会朝一个方向旋转,直到它面对目标为止,我需要它沿最短路线的方向旋转。

我真的对从哪里开始感到茫然,这是我对Vectors的第一次真正尝试。

directionNowrequiredDirection的角度由Math.Atan2(requiredDirection.Y,requiredDirection.X) - Math.Atan2(directionNow.Y,directionNow.X) 逆时针旋转为正,逆时针旋转为负。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM