我們正在試圖讓V和U之間的CoS值,但我們得到的結果比1高得多或多或少比0如何計算兩個向量之間的角度?
其中:
vx = in.nextInt(); // x speed of your pod
vy = in.nextInt(); // y speed of your pod
int ux = nextCheckPointIdX - x;
int uy = nextCheckPointIdY - y;
下面是公式:
double cos = (vx*ux + vy*uy)/(Math.sqrt(Math.pow(vx, 2) + Math.pow(vy, 2)) + Math.sqrt(Math.pow(ux, 2) + Math.pow(uy, 2)));
您是否在上一行發現任何錯誤?
兩個向量的點積是其長度的*產品* – harold
@harold我編輯的問題,時間之間的夾角的餘弦值,我們不想要的產品 –
你確實想要的產品。就像我說的,兩個向量的點積是cos(角度)* | A | * | B |',所以爲了提取'cos(角度)'部分,必須除以長度的乘積。在這個公式中沒有任何長度的總和,實際上這在一般情況下是罕見的。 – harold