1

私の動くオブジェクトのコード:

ObjectX.Location.Add(Velocity * Utils.GetMoveDir(start, destination));

効用関数:

    public static PointF GetMoveDir(PointF start, PointF destination)
    {
        PointF substraction = destination.SubStract(start);
        if (substraction == PointF.Empty) // If-statement is needed because normalizing a zero value results in a NaN value
            return PointF.Empty;
        else
            return substraction.Normalize(); // <<<< I need something for this
    }

私が働けない拡張機能:

    public static PointF Normalize(this PointF A)
    {
        throw new NotImplementedException(); // How do I solve this to make it like: http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.vector2.normalize.aspx
    }

XNAフレームワークを使用していないことに注意してください。

4

2 に答える 2

13
public static PointF Normalize(this PointF A)
{
    float distance = Math.Sqrt(A.X * A.X + A.Y * A.Y);
    return new PointF(A.X / distance, A.Y / distance);
}

また、正規化されたベクトル(単位ベクトル)とは何か、およびそれを計算する方法については、ここの最初の段落を参照してください。

于 2012-04-04T13:09:38.907 に答える
4
public static PointF Normalize(this PointF A)
{
    float length = Math.Sqrt( A.X*A.X + A.Y*A.Y);
    return new PointF( A.X/length, A.Y/length);
} 
于 2012-04-04T13:09:39.750 に答える