2014-08-30 76 views
2

當使用Vector2.Normalize功能(在XNA專門)Vector2.Normalize功能,困惑的對角線輸出

這也可能是我的矢量數學不好理解,但據我所知,正火給你一個方向我的問題是,或者是一個漸變。

如果你在一個方向上應用一個速度,比如向左和向右,它會針對特定的軸和方向返回正值或負值1,這對我來說是有意義的。

但是,如果我要求對角線移動的vector2進行歸一化,比方說每1單位右下降1個單位。它返回這個。

{X:0.7071068 Y:0.7071068}

這讓我吃驚,因爲我會一直以爲它會一直更喜歡[X:0.5 Y:0.5]

我的推理呢?如果一個方向的絕對值爲1,而另一個方向的絕對值爲1,則不應該以45度角移動產生類似0.5的中點?

並不會0.5和0.5添加產生的幅度1我認爲規範化的向量應該堅持?

我不知道我是否可以使用類似DYDX的東西看到自己的答案,因爲它只是一個方向,而不是某條已知終點的線。

+1

正常化矢量保持方向,但將其長度設置爲1,所以我不明白爲什麼這是錯誤的。 0.707是1/sqrt(2)。因此,長度爲sqrt(1/sqrt(2)** 2 + 1/sqrt(2)** 2)= 1. – Dirk 2014-08-30 14:07:20

+1

這裏的編程問題在哪裏?如果你對未規範的方向向量存在一些問題,那麼你最好閱讀一些相關的信息,並在math.stackexchange上提出一個問題。如果你有一些程序問題是由矢量的當前表示引起的 - 用代碼,期望和當前結果來描述它。 – 2014-08-30 14:24:45

+0

道歉,現在我明白它背後的數學更好一點,我意識到它更適合像你說的數學交換。我之前沒有找到合適的資源。我不確定Vector2.Normalize方法處理規範化的方式是否與標準數學中的方式不同,直到我理解它給出的答案。 – 2014-08-30 16:17:45

回答

5

這裏是一個視覺輔助。規範化總是會使向量的長度爲1.0。所以圖像中的3個矢量全部等於1.0。對角線矢量的y座標明顯大於0.5f

+0

啊謝謝我現在明白我的想法。 – 2014-08-31 20:11:44