Beispiel #1
0
function cameraTransform($C, $A)
{
    $w = normalize(addVector($C, scalarProduct($A, -1)));
    $y = array(0, 1, 0);
    $u = normalize(crossProduct($y, $w));
    $v = crossProduct($w, $u);
    $t = scalarProduct($C, -1);
    return array($u[0], $v[0], $w[0], 0, $u[1], $v[1], $w[1], 0, $u[2], $v[2], $w[2], 0, dotProduct($u, $t), dotProduct($v, $t), dotProduct($w, $t), 1);
}
Beispiel #2
0
/**
 * Cosine similarity for non-normalised vectors
 * sim(a, b) = (a�b) / (||a|| * ||b||)
 *
 * @param array $a
 * @param array $b
 * @return mixed
 */
function cosinus(array $a, array $b)
{
    $normA = norm($a);
    $normB = norm($b);
    return $normA * $normB != 0 ? dotProduct($a, $b) / ($normA * $normB) : 0;
}