3

ベクトル間の角度を見つけたい

v1 = [-1,-2]

v2 = [90,-5]

ここで角度を計算する方法を与えられた解(数学)

PHP コードでは、2 つの vector 間の角度を計算する必要があります [-1,-2] and [90,-5]。PHPコードが必要です。

ありがとう

4

3 に答える 3

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 
于 2013-01-01T06:45:35.370 に答える
9

atan2($y,$x)phpの関数を使用してそれを行うことができます。ラジアンで角度を見つけます。

<?php
$angle = rad2deg(atan2($y2-$y1,$x2-$x1));
//$angle is in degrees
?>
于 2013-01-01T07:38:40.790 に答える
3

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)
于 2013-01-01T07:36:45.470 に答える