如何在php中计算两个向量代码之间的角度

时间:2013-01-01 06:29:09

标签: php math linear-algebra

我想找到矢量

之间的角度
  

v1 = [-1,-2]

  

v2 = [90,-5]

here solution given how to calculate angle (mathematics)

PHP代码中的

需要计算两个向量[-1,-2] and [90,-5]之间的角度。 需要php代码。

由于

3 个答案:

答案 0 :(得分:9)

function 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 

答案 1 :(得分:8)

您可以使用php中的atan2($y,$x)函数来执行此操作。 找到弧度的角度。

<?php
$angle = rad2deg(atan2($y2-$y1,$x2-$x1));
//$angle is in degrees
?>

答案 2 :(得分:2)

两个向量的角度由

计算
       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)