我希望找到向量之间的角度
v1 = [-1,-2]
和
v2 = [90,-5]
需要在php代码中计算两个向量之间的角度 [-1,-2]和[90,-5]
。
需要php代码。
谢谢
v1 = [-1,-2]
和
v2 = [90,-5]
需要在php代码中计算两个向量之间的角度 [-1,-2]和[90,-5]
。
需要php代码。
谢谢
你可以在php中使用atan2($y,$x)
函数来完成它,它可以找到弧度制下的角度。
<?php
$angle = rad2deg(atan2($y2-$y1,$x2-$x1));
//$angle is in degrees
?>
$x1 = 2; $y1 = 0; $x2 = 2; $y2 = 2;
会导致输出 °90。它应该输出 °45,不是吗? - Genaritofunction norm($vec)
{
$norm = 0;
$components = count($vec);
for ($i = 0; $i < $components; $i++)
$norm += $vec[$i] * $vec[$i];
return sqrt($norm);
}
function dot($vec1, $vec2)
{
$prod = 0;
$components = count($vec1);
for ($i = 0; $i < $components; $i++)
$prod += ($vec1[$i] * $vec2[$i]);
return $prod;
}
计算实际角度的方法如下:
$v1 = array(-1, -2);
$v2 = array(90, -5);
$ang = acos(dot($v1, $v2) / (norm($v1) * norm($v2)));
echo $ang; // angle in radians
> 1.97894543055
v1X * v2X + v1Y * v2Y
acos(--------------------------) = angle between two vectors.
|v1| * |v2|
您可以直接在PHP中使用此公式。
注意:
|v1|
和|v2|
是向量的长度,可以使用勾股定理计算。
|v1| = sqrt(v1X * v1X + v1Y * v1Y)
|v2| = sqrt(v2X * v2X + v2Y * v2Y)