Version: 2019.4
Направление и расстояние от одного объекта до другого.
Величина одного вектора, лежащая в направлении другого вектора

Вычисление нормали/перпендикуляра

Нормаль (т.е. вектор, перпендикулярный плоскости) часто необходим в процессе создания меша и также может быть полезен при отслеживании пути и других ситуациях. Имея три точки на плоскости, скажем угловые точки треугольника меша, легко вычислить нормаль. Выберите любую из трех точек и затем вычтите ее из каждой из двух остальных точек, чтобы получить два вектора:-

var a: Vector3;
var b: Vector3;
var c: Vector3;

var side1: Vector3 = b - a;
var side2: Vector3 = c - a;

Векторное произведение этих векторов даст третий вектор, перпендикулярный к искомой поверхности. Для определения порядка, в котором два вектора должны быть использованы в функции векторного произведения, можно использовать “правило левой руки”. Если смотреть сверху на поверхность (из которой должна выходить нормаль), первый вектор должен следовать по часовой стрелке за вторым:-

 var perp: Vector3 = Vector3.Cross(side1, side2);

Результат будет направлен в противоположную сторону, если поменять порядок исходных векторов.

Для мешей нормаль должна быть нормализована. Это может быть сделано с помощью свойства normalized, но есть другая хитрость, которая иногда может быть полезна. Вы можете нормализовать перпендикуляр, разделив его на его же длину:-

var perpLength = perp.magnitude;
perp /= perpLength;

Оказывается, площадь треугольника равна perpLength / 2. Это полезно, если вам нужно найти площадь поверхности всего меша, или вы хотите выбрать треугольники случайно, с вероятностью на основе их относительной площади.

Направление и расстояние от одного объекта до другого.
Величина одного вектора, лежащая в направлении другого вектора
Copyright © 2020 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961