Добавлен , не публикуется
Скалярное произведение (dot product) получает 2 вектора и возвращает скаляр. Этот скаляр равен произведению величин этих векторов, умноженному на косинус угла между ними. Когда оба вектора - нормированные, косинус по сути дела утверждает, как далеко первый вектор простирается в направлении второго (или наоборот - порядок параметров роли не играет).
Если работать с точки зрения углов, то можно достаточно просто найти соответствующие косинусы используя калькулятор. Тем не менее, полезно иметь интуитивное понимание основных значений косинуса, как показано на диаграмме ниже:
калярное произведение - это очень простая операция, которую, при некоторых обстоятельствах, можно использовать вместо функции Mathf.Cos или операции векторных величин (оно не делает в точности то же самое, но иногда эффект получается одинаковый). Тем не менее, вычисление скалярного произведения на уровне процессора проходит значительно быстрее, так что оно может оказаться ценной оптимизацией.
Описание взято отсюда

Формулы

a.x * b.x + a.y * b.y

Применение

  • Почти всё, что связано с углами

Код

    /// <summary>
    /// Скалярное произведение векторов
    /// </summary>
    public static float scalar(Vector2 a, Vector2 b)
    {
        return (a.x * b.x).unbox() + (a.y * b.y).unbox();
    }

    /// <summary>
    /// Скалярное произведение векторов
    /// </summary>
    public static float scalar(Vector2 a, Vector2 zero, Vector2 b)
    {
        return scalar(a - zero, b - zero);
    }

    /// <summary>
    /// Скалярное произведение векторов
    /// </summary>
    public static float scalar(Vector2 a1, Vector2 a2, Vector2 b1, Vector2 b2)
    {
        return scalar(a2 - a1, b2 - b1);
    }
Функции используют unboxing для сохранения точности вычисляемого значения.
Так же реализовано через стандартную функцию Vector2.Dot(lhs, rhs), но без анбоксинга