Vector4I
Вектор из 4 целых компонентов int для координат и индексов.
Структура C# с 4 компонентами int: X, Y, Z и W. Подходит для целочисленных координат и индексов; компоненты ограничены диапазоном Int32. Присваивание копирует значение. Это не вектор с компонентами long.
Следите за диапазоном промежуточных сумм, разностей и произведений. Преобразование в вектор float не сохраняет точность всех больших целых; смена типа не исправляет уже произошедшее переполнение.
В C# Vector4I не преобразуется в bool. Для точной проверки нулевого вектора используйте сравнение с Vector4I.Zero; ненулевой вектор сам по себе не означает допустимую координату или индекс.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
Vector4IКонструктор
public Vector4I(int x, int y, int z, int w);Записывает x, y, z, w в соответствующие int-компоненты без округления, нормализации или ограничения диапазона. default(Vector4I) содержит нули. Это структура: присваивание копирует все компоненты.
| Имя | Тип | По умолчанию |
|---|---|---|
x | int | — |
y | int | — |
z | int | — |
w | int | — |
xНачальная знаковая int-компонента X.
yНачальная знаковая int-компонента Y.
zНачальная знаковая int-компонента Z.
wНачальная знаковая int-компонента W.
Свойства5
ItemСвойство
public int this[int index] { get; set; }Индексы компонент: 0 = X, 1 = Y, 2 = Z, 3 = W. Getter и setter вне диапазона 0..3 выбрасывают ArgumentOutOfRangeException. Меняется эта переменная структуры; ранее присвоенная копия не меняется.
MaxValueСвойство
public static Vector4I MaxValue { get; }(int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue). Конечные максимальные int, а не бесконечность; арифметика может переполниться. Возвращается копия значения; её изменение не меняет константу.
MinValueСвойство
public static Vector4I MinValue { get; }(int.MinValue, int.MinValue, int.MinValue, int.MinValue). Конечные минимальные int, а не отрицательная бесконечность. Abs() выбрасывает OverflowException. Возвращается копия значения; её изменение не меняет константу.
OneСвойство
public static Vector4I One { get; }(1, 1, 1, 1). Все компоненты равны 1; это не единичная длина. Возвращается копия значения; её изменение не меняет константу.
ZeroСвойство
public static Vector4I Zero { get; }(0, 0, 0, 0). Нулевой вектор, равный default(Vector4I). Возвращается копия значения; её изменение не меняет константу.
Методы41
AbsVector4I
public Vector4I Abs();Возвращает новую структуру с Math.Abs для каждой компоненты; исходное значение не меняется. Для int.MinValue положительный результат не помещается в int, поэтому выбрасывается OverflowException.
Vector4IАбсолютные значения всех компонент, если они представимы в int.
Clamp2 перегрузки
public Vector4I Clamp(Vector4I min, Vector4I max);Возвращает копию с покомпонентным ограничением включительными границами. У каждой оси свои min и max. Если любая нижняя граница выше верхней, выбрасывается ArgumentException; границы не переставляются.
| Имя | Тип | По умолчанию |
|---|---|---|
min | Vector4I | — |
max | Vector4I | — |
minВключительная нижняя граница, не выше соответствующей верхней.
maxВключительная верхняя граница, не ниже соответствующей нижней.
Vector4IВектор с каждой компонентой в заданном диапазоне.
public Vector4I Clamp(int min, int max);Возвращает копию с покомпонентным ограничением включительными границами. Одни min и max применяются ко всем осям. Если любая нижняя граница выше верхней, выбрасывается ArgumentException; границы не переставляются.
| Имя | Тип | По умолчанию |
|---|---|---|
min | int | — |
max | int | — |
minВключительная нижняя граница, не выше соответствующей верхней.
maxВключительная верхняя граница, не ниже соответствующей нижней.
Vector4IВектор с каждой компонентой в заданном диапазоне.
Deconstructvoid
public void Deconstruct(out int x, out int y, out int z, out int w);Копирует компоненты в выходные аргументы в порядке X, Y, Z, W. Позволяет записать var (x, y, z, w) = vector; исходный вектор не меняется.
| Имя | Тип | По умолчанию |
|---|---|---|
x | int | — |
y | int | — |
z | int | — |
w | int | — |
xВыходная копия компоненты X.
yВыходная копия компоненты Y.
zВыходная копия компоненты Z.
wВыходная копия компоненты W.
DistanceSquaredToint
public int DistanceSquaredTo(Vector4I to);Вычисляет (to - this).LengthSquared() в int. Переполнение возможно уже при вычитании, затем при возведении в квадрат и сложении; результат может быть отрицательным или ошибочно малым. Не используйте для больших координат без проверки диапазона. Для широкого диапазона переводите компоненты в double до вычитания — пример приведён у DistanceTo.
| Имя | Тип | По умолчанию |
|---|---|---|
to | Vector4I | — |
toКоординаты второй точки; разность с текущей точкой сначала вычисляется в int.
intКвадрат расстояния, только если все промежуточные целочисленные операции укладываются в int.
DistanceTofloat
public float DistanceTo(Vector4I to);Вычисляет (to - this).Length(). Float-результат не защищает от переполнения int при вычитании и возведении в квадрат. От (int.MinValue, 0, 0, 0) до (int.MaxValue, 0, 0, 0) установленный SDK возвращает 1 вместо 4294967295.
WideDistance переводит каждую компоненту в double до вычитания. Перегрузка для Vector4I учитывает и W: это обычная четвёртая компонента, а не автоматически однородная координата.
using System;
using Reckfell;
public static class IntegerSpaceExamples
{
public static Vector3I CellAt(Vector3 position, int cellSize)
{
if (cellSize <= 0) throw new ArgumentOutOfRangeException(nameof(cellSize));
Vector3 cell = (position / cellSize).Floor();
for (int axis = 0; axis < 3; axis++)
if (!float.IsFinite(cell[axis]) || (double)cell[axis] < int.MinValue || (double)cell[axis] > int.MaxValue)
throw new ArgumentOutOfRangeException(nameof(position));
return (Vector3I)cell;
}
public static double WideDistance(Vector3I from, Vector3I to)
{
double dx = (double)to.X - from.X;
double dy = (double)to.Y - from.Y;
double dz = (double)to.Z - from.Z;
return Math.Sqrt(dx * dx + dy * dy + dz * dz);
}
public static double WideDistance(Vector4I from, Vector4I to)
{
double dx = (double)to.X - from.X;
double dy = (double)to.Y - from.Y;
double dz = (double)to.Z - from.Z;
double dw = (double)to.W - from.W;
return Math.Sqrt(dx * dx + dy * dy + dz * dz + dw * dw);
}
}| Имя | Тип | По умолчанию |
|---|---|---|
to | Vector4I | — |
toКоординаты второй точки; разность с текущей точкой сначала вычисляется в int.
floatЕвклидово расстояние как float при отсутствии промежуточного переполнения; иначе значение может быть ошибочным или NaN.
Equals2 перегрузки
public bool Equals(Vector4I other);Точно сравнивает X, Y, Z, W. Приближённого сравнения и сравнения длин нет.
| Имя | Тип | По умолчанию |
|---|---|---|
other | Vector4I | — |
otherВторой Vector4I для точного сравнения X, Y, Z, W.
booltrue только при совпадении всех компонент и подходящем типе.
public override bool Equals(object? obj);Точно сравнивает X, Y, Z, W. object должен содержать Vector4I: Vector4 с теми же координатами, null и другие типы дают false.
| Имя | Тип | По умолчанию |
|---|---|---|
obj | object | — |
objОбъект для проверки; совпасть может только упакованный Vector4I с теми же X, Y, Z, W.
booltrue только при совпадении всех компонент и подходящем типе.
GetHashCodeint
public override int GetHashCode();Использует HashCode.Combine(X, Y, Z, W). Равные векторы имеют одинаковый хеш, но совпадение хеша не доказывает равенство. Подходит для ключей Dictionary<Vector4I, T>; не сохраняйте хеш как постоянный идентификатор между запусками.
intХеш обеих целочисленных компонент.
Lengthfloat
public float Length();Вычисляет XX + YY + ZZ + WW в int, затем извлекает float-корень. Переполнение возможно в квадратах и сумме: (50000, 0, 0, 0) даёт NaN, а (65536, 0, 0, 0) — 0. Для широкого диапазона переводите компоненты в double до умножения.
floatДлина при допустимом диапазоне промежуточных значений; переполнение делает результат ненадёжным.
LengthSquaredint
public int LengthSquared();Вычисляет XX + YY + ZZ + WW в int, без корня. Переполнение возможно в квадратах и сумме: (50000, 0, 0, 0) даёт отрицательный квадрат длины, а (65536, 0, 0, 0) — 0. Для широкого диапазона переводите компоненты в double до умножения.
intКвадрат длины, если произведения и сумма представимы в int.
Max2 перегрузки
public Vector4I Max(Vector4I with);Большая из двух величин выбирается отдельно для X, Y, Z, W; возвращается копия. Аргумент задаёт отдельные значения по осям. Это не выбор одного целого вектора по операторам < или >.
| Имя | Тип | По умолчанию |
|---|---|---|
with | Vector4I | — |
withКомпоненты или одно общее значение для покомпонентного сравнения.
Vector4IПокомпонентные максимумы.
public Vector4I Max(int with);Большая из двух величин выбирается отдельно для X, Y, Z, W; возвращается копия. Одно значение сравнивается с обеими компонентами. Это не выбор одного целого вектора по операторам < или >.
| Имя | Тип | По умолчанию |
|---|---|---|
with | int | — |
withКомпоненты или одно общее значение для покомпонентного сравнения.
Vector4IПокомпонентные максимумы.
MaxAxisIndexVector4I.Axis
public Vector4I.Axis MaxAxisIndex();Большая знаковая компонента определяет ось; абсолютные величины не сравниваются. При равенстве выбирается первая ось в порядке X, Y, Z, W. У равных компонент результат Axis.X.
Vector4I.AxisПервая ось максимальной знаковой компоненты.
Min2 перегрузки
public Vector4I Min(Vector4I with);Меньшая из двух величин выбирается отдельно для X, Y, Z, W; возвращается копия. Аргумент задаёт отдельные значения по осям. Это не выбор одного целого вектора по операторам < или >.
| Имя | Тип | По умолчанию |
|---|---|---|
with | Vector4I | — |
withКомпоненты или одно общее значение для покомпонентного сравнения.
Vector4IПокомпонентные минимумы.
public Vector4I Min(int with);Меньшая из двух величин выбирается отдельно для X, Y, Z, W; возвращается копия. Одно значение сравнивается с обеими компонентами. Это не выбор одного целого вектора по операторам < или >.
| Имя | Тип | По умолчанию |
|---|---|---|
with | int | — |
withКомпоненты или одно общее значение для покомпонентного сравнения.
Vector4IПокомпонентные минимумы.
MinAxisIndexVector4I.Axis
public Vector4I.Axis MinAxisIndex();Меньшая знаковая компонента определяет ось; абсолютные величины не сравниваются. При равенстве выбирается последняя ось в порядке X, Y, Z, W. У равных компонент результат Axis.W.
Vector4I.AxisПоследняя ось минимальной знаковой компоненты.
SignVector4I
public Vector4I Sign();Возвращает новую структуру: отрицательная компонента становится -1, нулевая — 0, положительная — 1. int.MinValue даёт -1 без взятия абсолютной величины. Это не нормализация длины: (1, 1, 1, 1) остаётся (1, 1, 1, 1).
Vector4IВектор знаков из -1, 0 и 1.
Snapped2 перегрузки
public Vector4I Snapped(Vector4I step);Привязывает каждую компоненту к шагу через double-формулу floor(value / step + 0.5) * step с последующим приведением к int. Положительный шаг округляет половины к большему значению: (6, -6, 2, 2).Snapped(4) даёт (8, -4, 4, 4). Нулевой шаг сохраняет компоненту; отрицательный меняет правило половин, поэтому используйте положительный шаг. Результат должен помещаться в int; ограничение диапазона не выполняется.
| Имя | Тип | По умолчанию |
|---|---|---|
step | Vector4I | — |
stepШаг каждой оси или один общий шаг. Рекомендуется положительный; 0 оставляет соответствующую компоненту без изменения.
Vector4IНовая структура с привязанными компонентами; исходная не меняется.
public Vector4I Snapped(int step);Привязывает каждую компоненту к шагу через double-формулу floor(value / step + 0.5) * step с последующим приведением к int. Положительный шаг округляет половины к большему значению: (6, -6, 2, 2).Snapped(4) даёт (8, -4, 4, 4). Нулевой шаг сохраняет компоненту; отрицательный меняет правило половин, поэтому используйте положительный шаг. Результат должен помещаться в int; ограничение диапазона не выполняется.
| Имя | Тип | По умолчанию |
|---|---|---|
step | int | — |
stepШаг каждой оси или один общий шаг. Рекомендуется положительный; 0 оставляет соответствующую компоненту без изменения.
Vector4IНовая структура с привязанными компонентами; исходная не меняется.
ToString2 перегрузки
public override string ToString();Использует CultureInfo.InvariantCulture независимо от текущей культуры; вектор (3, -4, 2, 2) возвращает "(3, -4, 2, 2)". Эквивалентно ToString(null).
stringСтрока всех компонент в указанном числовом формате.
public string ToString(string? format);Использует CultureInfo.InvariantCulture независимо от текущей культуры; вектор (3, -4, 2, 2) возвращает "(3, -4, 2, 2)". format применяется отдельно к каждому int: "D4" даёт "(0003, -0004, 0002, 0002)". Неверный формат вызывает FormatException.
| Имя | Тип | По умолчанию |
|---|---|---|
format | string | — |
formatЧисловой формат int для всех компонент, например "D4"; null использует обычный формат. Неверный формат вызывает FormatException.
stringСтрока всех компонент в указанном числовом формате.
op_AdditionVector4I
public static Vector4I operator +(Vector4I left, Vector4I right);Возвращает (left.X + right.X, left.Y + right.Y, left.Z + right.Z, left.W + right.W) как новую структуру. В установленном SDK переполнение int оборачивается без насыщения; checked вокруг вызова не меняет уже скомпилированный оператор.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Vector4I | — |
right | Vector4I | — |
leftЛевый вектор; операция не изменяет переменную вызывающего кода.
rightПравый вектор; операция не изменяет переменную вызывающего кода.
Vector4IРезультат покомпонентной операции; исходные переменные не меняются.
op_Division2 перегрузки
public static Vector4I operator /(Vector4I vec, Vector4I divisorv);Целочисленно делит каждую компоненту с усечением к нулю: (-7, 7, 0, 0) / (2, 2, 2, 2) даёт (-3, 3, 0, 0). Нулевой делитель вызывает DivideByZeroException. Сочетание int.MinValue и -1 для соответствующей компоненты в установленном SDK вызывает OverflowException. Делители заданы отдельно по осям.
| Имя | Тип | По умолчанию |
|---|---|---|
vec | Vector4I | — |
divisorv | Vector4I | — |
vecВектор-операнд; возвращается новое значение структуры.
divisorvНенулевые делители для соответствующих компонент X, Y, Z, W.
Vector4IЦелочисленные частные X, Y, Z, W.
public static Vector4I operator /(Vector4I vec, int divisor);Целочисленно делит каждую компоненту с усечением к нулю: (-7, 7, 0, 0) / 2 даёт (-3, 3, 0, 0). Нулевой делитель вызывает DivideByZeroException. Сочетание int.MinValue и -1 для соответствующей компоненты в установленном SDK вызывает OverflowException. Один делитель применяется ко всем осям.
| Имя | Тип | По умолчанию |
|---|---|---|
vec | Vector4I | — |
divisor | int | — |
vecВектор-операнд; возвращается новое значение структуры.
divisorОбщий ненулевой делитель для X, Y, Z, W.
Vector4IЦелочисленные частные X, Y, Z, W.
op_Equalitybool
public static bool operator ==(Vector4I left, Vector4I right);Точно сравнивает все целочисленные компоненты. Значения не сравниваются по длине; приближённый допуск не используется.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Vector4I | — |
right | Vector4I | — |
leftЛевый вектор; операция не изменяет переменную вызывающего кода.
rightПравый вектор; операция не изменяет переменную вызывающего кода.
booltrue, если X, Y, Z, W совпадают.
op_ExplicitVector4I
public static explicit operator Vector4I(Vector4 value);Приводит каждую компоненту Vector4 к int с усечением к нулю: (-1.9, 1.9, -2.9, -2.9) даёт (-1, 1, -2, -2). Для отрицательных координат клеток сначала используйте Floor. До приведения проверяйте конечность и диапазон int; переносимый результат для NaN, Infinity и выхода за диапазон не гарантируется.
| Имя | Тип | По умолчанию |
|---|---|---|
value | Vector4 | — |
valueИсходный вектор для преобразования; ограничения точности и диапазона описаны у операции.
Vector4IВектор целочисленных компонент с усечением к нулю для входов в допустимом диапазоне.
op_GreaterThanbool
public static bool operator >(Vector4I left, Vector4I right);Лексикографическое сравнение в порядке X, Y, Z, W: следующая компонента проверяется только при равенстве предыдущих. Это порядок сортировки, а не покомпонентная проверка границ и не сравнение длин. (1, 100, 0, 0) < (2, -100, 0, 0) — true, несмотря на больший Y слева. Для проверки области сравнивайте оси явно.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Vector4I | — |
right | Vector4I | — |
leftЛевый вектор; операция не изменяет переменную вызывающего кода.
rightПравый вектор; операция не изменяет переменную вызывающего кода.
booltrue при выполнении отношения left > right в указанном порядке.
op_GreaterThanOrEqualbool
public static bool operator >=(Vector4I left, Vector4I right);Лексикографическое сравнение в порядке X, Y, Z, W: следующая компонента проверяется только при равенстве предыдущих. Это порядок сортировки, а не покомпонентная проверка границ и не сравнение длин. (1, 100, 0, 0) < (2, -100, 0, 0) — true, несмотря на больший Y слева. Для проверки области сравнивайте оси явно.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Vector4I | — |
right | Vector4I | — |
leftЛевый вектор; операция не изменяет переменную вызывающего кода.
rightПравый вектор; операция не изменяет переменную вызывающего кода.
booltrue при выполнении отношения left >= right в указанном порядке.
op_ImplicitVector4
public static implicit operator Vector4(Vector4I value);Преобразует каждую int-компоненту во float-компоненту Vector4 установленного SDK. Большие целые могут потерять точность: 16777217 превращается в 16777216. Для точной арифметики сетки сохраняйте Vector4I до этапа отображения.
| Имя | Тип | По умолчанию |
|---|---|---|
value | Vector4I | — |
valueИсходный вектор для преобразования; ограничения точности и диапазона описаны у операции.
Vector4Vector4 с преобразованными компонентами; точность больших int не гарантируется.
op_Inequalitybool
public static bool operator !=(Vector4I left, Vector4I right);Отрицает ==. Значения не сравниваются по длине; приближённый допуск не используется.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Vector4I | — |
right | Vector4I | — |
leftЛевый вектор; операция не изменяет переменную вызывающего кода.
rightПравый вектор; операция не изменяет переменную вызывающего кода.
booltrue, если хотя бы одна компонента различается.
op_LessThanbool
public static bool operator <(Vector4I left, Vector4I right);Лексикографическое сравнение в порядке X, Y, Z, W: следующая компонента проверяется только при равенстве предыдущих. Это порядок сортировки, а не покомпонентная проверка границ и не сравнение длин. (1, 100, 0, 0) < (2, -100, 0, 0) — true, несмотря на больший Y слева. Для проверки области сравнивайте оси явно.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Vector4I | — |
right | Vector4I | — |
leftЛевый вектор; операция не изменяет переменную вызывающего кода.
rightПравый вектор; операция не изменяет переменную вызывающего кода.
booltrue при выполнении отношения left < right в указанном порядке.
op_LessThanOrEqualbool
public static bool operator <=(Vector4I left, Vector4I right);Лексикографическое сравнение в порядке X, Y, Z, W: следующая компонента проверяется только при равенстве предыдущих. Это порядок сортировки, а не покомпонентная проверка границ и не сравнение длин. (1, 100, 0, 0) < (2, -100, 0, 0) — true, несмотря на больший Y слева. Для проверки области сравнивайте оси явно.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Vector4I | — |
right | Vector4I | — |
leftЛевый вектор; операция не изменяет переменную вызывающего кода.
rightПравый вектор; операция не изменяет переменную вызывающего кода.
booltrue при выполнении отношения left <= right в указанном порядке.
op_Modulus2 перегрузки
public static Vector4I operator %(Vector4I vec, Vector4I divisorv);Вычисляет остатки C# от усечённого деления: (10, -20, 0, 0) % (7, 7, 7, 7) даёт (3, -6, 0, 0). Это не положительное циклическое оборачивание; для него используйте Mathf.PosMod с положительным модулем. Нулевой делитель вызывает DivideByZeroException. Сочетание int.MinValue и -1 для соответствующей компоненты в установленном SDK вызывает OverflowException. Делители заданы отдельно по осям.
| Имя | Тип | По умолчанию |
|---|---|---|
vec | Vector4I | — |
divisorv | Vector4I | — |
vecВектор-операнд; возвращается новое значение структуры.
divisorvНенулевые делители для соответствующих компонент X, Y, Z, W.
Vector4IОстатки X, Y, Z, W со знаком делимого либо 0.
public static Vector4I operator %(Vector4I vec, int divisor);Вычисляет остатки C# от усечённого деления: (10, -20, 0, 0) % 7 даёт (3, -6, 0, 0). Это не положительное циклическое оборачивание; для него используйте Mathf.PosMod с положительным модулем. Нулевой делитель вызывает DivideByZeroException. Сочетание int.MinValue и -1 для соответствующей компоненты в установленном SDK вызывает OverflowException. Один делитель применяется ко всем осям.
| Имя | Тип | По умолчанию |
|---|---|---|
vec | Vector4I | — |
divisor | int | — |
vecВектор-операнд; возвращается новое значение структуры.
divisorОбщий ненулевой делитель для X, Y, Z, W.
Vector4IОстатки X, Y, Z, W со знаком делимого либо 0.
op_Multiply3 перегрузки
public static Vector4I operator *(Vector4I left, Vector4I right);Возвращает (left.X * right.X, left.Y * right.Y, left.Z * right.Z, left.W * right.W) как новую структуру. Для int используется один множитель всех осей; два вектора умножаются покомпонентно, не как скалярное произведение. В установленном SDK переполнение int оборачивается без насыщения; checked вокруг вызова не меняет уже скомпилированный оператор.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Vector4I | — |
right | Vector4I | — |
leftЛевый вектор; операция не изменяет переменную вызывающего кода.
rightПравый вектор; операция не изменяет переменную вызывающего кода.
Vector4IРезультат покомпонентной операции; исходные переменные не меняются.
public static Vector4I operator *(Vector4I vec, int scale);Возвращает (vec.X * scale, vec.Y * scale, vec.Z * scale, vec.W * scale) как новую структуру. Для int используется один множитель всех осей; два вектора умножаются покомпонентно, не как скалярное произведение. В установленном SDK переполнение int оборачивается без насыщения; checked вокруг вызова не меняет уже скомпилированный оператор.
| Имя | Тип | По умолчанию |
|---|---|---|
vec | Vector4I | — |
scale | int | — |
vecВектор-операнд; возвращается новое значение структуры.
scaleЦелочисленный множитель всех компонент; произведение должно помещаться в int.
Vector4IРезультат покомпонентной операции; исходные переменные не меняются.
public static Vector4I operator *(int scale, Vector4I vec);Возвращает (vec.X * scale, vec.Y * scale, vec.Z * scale, vec.W * scale) как новую структуру. Для int используется один множитель всех осей; два вектора умножаются покомпонентно, не как скалярное произведение. В установленном SDK переполнение int оборачивается без насыщения; checked вокруг вызова не меняет уже скомпилированный оператор.
| Имя | Тип | По умолчанию |
|---|---|---|
scale | int | — |
vec | Vector4I | — |
scaleЦелочисленный множитель всех компонент; произведение должно помещаться в int.
vecВектор-операнд; возвращается новое значение структуры.
Vector4IРезультат покомпонентной операции; исходные переменные не меняются.
op_SubtractionVector4I
public static Vector4I operator -(Vector4I left, Vector4I right);Возвращает (left.X - right.X, left.Y - right.Y, left.Z - right.Z, left.W - right.W) как новую структуру. В установленном SDK переполнение int оборачивается без насыщения; checked вокруг вызова не меняет уже скомпилированный оператор.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Vector4I | — |
right | Vector4I | — |
leftЛевый вектор; операция не изменяет переменную вызывающего кода.
rightПравый вектор; операция не изменяет переменную вызывающего кода.
Vector4IРезультат покомпонентной операции; исходные переменные не меняются.
op_UnaryNegationVector4I
public static Vector4I operator -(Vector4I vec);Возвращает (-X, -Y, -Z, -W) как новую структуру. В установленном SDK переполнение int оборачивается без насыщения; checked вокруг вызова не меняет уже скомпилированный оператор. Для -int.MinValue остаётся int.MinValue.
| Имя | Тип | По умолчанию |
|---|---|---|
vec | Vector4I | — |
vecВектор-операнд; возвращается новое значение структуры.
Vector4IРезультат покомпонентной операции; исходные переменные не меняются.
op_UnaryPlusVector4I
public static Vector4I operator +(Vector4I vec);Возвращает (X, Y, Z, W) как новую структуру. Унарный плюс не меняет значение.
| Имя | Тип | По умолчанию |
|---|---|---|
vec | Vector4I | — |
vecВектор-операнд; возвращается новое значение структуры.
Vector4IРезультат покомпонентной операции; исходные переменные не меняются.
Поля и константы4
WПоле
public int W;Изменяемая знаковая 32-битная компонента W, также доступная через [3]. Присваивание не меняет другие компоненты и не ограничивает диапазон.
XПоле
public int X;Изменяемая знаковая 32-битная компонента X, также доступная через [0]. Присваивание не меняет другие компоненты и не ограничивает диапазон.
YПоле
public int Y;Изменяемая знаковая 32-битная компонента Y, также доступная через [1]. Присваивание не меняет другие компоненты и не ограничивает диапазон.
ZПоле
public int Z;Изменяемая знаковая 32-битная компонента Z, также доступная через [2]. Присваивание не меняет другие компоненты и не ограничивает диапазон.
Vector4I.Axis
| Значение | Описание |
|---|---|
W = 3 | Перечисленное значение для оси W. Возвращается |
X = 0 | Перечисленное значение для оси X. Возвращается |
Y = 1 | Перечисленное значение для оси Y. Возвращается |
Z = 2 | Перечисленное значение для оси Z. Возвращается |