2016-02-03 30 views
1

我遇到了一個問題,我無法根據對象旋轉和移動量找出算法找出目標點。我必須向我的旋轉方向移動一定數量,但我不知道如何計算我最終所處的目標點。例如:基於旋轉和移動量的統一目標矢量

Object location = (0, 0) 
Object rotation = 45 
Amount to move = 4 

與這些變量的目的地點將是(2.5,2.5)

實施例2:

Object location = (0, 0) 
Object rotation = 0 
Amount to move = 4 

以及與這些將是(0,4)

問題是,當我知道這些變量時,我不知道如何計算目標點。我需要一個算法來計算目的地點,有人可以幫忙嗎? :)

問候,圖卡。

+2

我投票關閉這一問題作爲題外話,因爲這是一個數學問題;問math.stackexchange.com – Fattie

+0

爲什麼2.5,2.5是否有任何特定的原因? – TheBook

+0

移動金額?會是'移動的距離'? – TheBook

回答

2
float homMuchToMove = 4f; 
    float angle = 45f; 
    float pointX = Mathf.Cos (ConvertToRadians (angle)) * homMuchToMove; 
    float pointY = Mathf.Sin (ConvertToRadians (angle)) * homMuchToMove; 

    public float ConvertToRadians(float angle) 
    { 
     return (Mathf.PI/180f) * angle; 
    } 

對於這些值,您將在2.828427f

+0

謝謝!它做了訣竅,很好的答案。 – TuukkaX

+1

x座標是餘弦,y座標是正弦。對於45°x = y這樣可以解決,但通常這會給出錯誤的答案。嘗試以90°角度,此代碼爲您提供(4,0)何時應該是(0,4)(請參閱https://en.wikipedia.org/wiki/Polar_coordinate_system#Converting_between_polar_and_Cartesian_coordinates)。交換'Sin'和'Cos'使其正確:)。 –

+0

@MaximilianGerhardt它應該給(4,0)...? – TuukkaX

3

得到兩分。如果這是你要計算目標點嚴格的算法問題(即沒有遊戲對象走動,但抽象的數據),您可以這樣做: 考慮笛卡爾座標系下的二維平面(即標準x/y系統)。設O爲點(0,0)處的對象。從你的「目的地」(2.5,2.5),我可以假設你想以後的事:

enter image description here

所以45°是角度和4amount to move)是你想要的線段的長度向前走。

formula2

但實際上,這種形象是錯誤的,這是我們」:從(0,0)出發,終點可以用正弦和餘弦使用公式的一個點的極座標表徵計算我們將在下面的計算中看到。如果運動沿着傾斜角度爲45°的線,那麼你會在其他地方出現一點點。

無論如何,在這個例子中,alpha將是45°,它是以弧度表示的pi/4(你可以通過除以180並乘以pi得到該值),並且半徑r將是4(我們想要移動的量) ,因此我們計算了目標點爲:

formula3

如果點的任何位置在房間裏(不是(0,0)(x_0, y_0)),那麼你仍然可以將其添加爲偏移:

formula4

因此,在代碼中你會寫:

public static Vector2 ComputeDestination(Vector2 origin, float amountToMove, float angle) 
{ 
     //convert degrees to radians 
     var rad = angle * Mathf.Deg2Rad; 
     //calculate end point 
     var end_point = origin + amountToMove * new Vector2(Mathf.Cos(rad), Mathf.Sin(rad)); 
     return end_point; 
} 
+0

哦,我現在明白了。我通過應用cos和sin得到了相同的結果,但他們在一定的旋轉中讓我感到痛苦。這也是一個很好的答案,但我會首先接受@Jerry Switalski的答案。謝謝! – TuukkaX

+0

雖然這些答案令人欽佩,但這僅僅是**不是算術問題的論壇**。它應該是數學。也許吧。但不在這裏。 Unity3D標籤中存在混亂的問題。 – Fattie