Transform2D
Две оси и перенос 2D-преобразования.
Умножение transform × point применяет обе оси и Origin. При композиции parent × child правое преобразование действует первым. В обычном экранном 2D положительный поворот выглядит по часовой стрелке из-за Y вниз.
Inverse и обратная запись point × transform предполагают ортонормированный базис. Для обратимого масштаба используйте AffineInverse. При нулевом определителе обратного преобразования нет. Значение является C#-структурой: после правки копии присвойте её обратно свойству Entity.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы4
Transform2D4 перегрузки
public Transform2D(Vector2 xAxis, Vector2 yAxis, Vector2 originPos);Создаёт преобразование из двух столбцов базиса и переноса. Векторы xAxis и yAxis — столбцы, не строки матрицы.
| Имя | Тип | По умолчанию |
|---|---|---|
xAxis | Vector2 | — |
yAxis | Vector2 | — |
originPos | Vector2 | — |
xAxisПервый столбец базиса.
yAxisВторой столбец базиса.
originPosПеренос Origin.
public Transform2D(float rotation, Vector2 origin);Создаёт преобразование с поворотом в радианах и переносом. Базис имеет единичный масштаб и нулевой скос; положительный поворот переводит Right в сторону Down в обычном 2D.
| Имя | Тип | По умолчанию |
|---|---|---|
rotation | float | — |
origin | Vector2 | — |
rotationПоворот в радианах.
originПеренос Origin.
public Transform2D(float rotation, Vector2 scale, float skew, Vector2 origin);Создаёт преобразование из поворота, масштаба, скоса и переноса. Поворот и скос задаются в радианах; нулевой масштаб может сделать базис необратимым.
| Имя | Тип | По умолчанию |
|---|---|---|
rotation | float | — |
scale | Vector2 | — |
skew | float | — |
origin | Vector2 | — |
rotationПоворот в радианах.
scaleМасштаб по локальным осям X и Y.
skewСкос в радианах.
originПеренос Origin.
public Transform2D(float xx, float xy, float yx, float yy, float ox, float oy);Создает Transform2D из 3 значений Vector2, представляющих Transform2D.X, Transform2D.Y и Transform2D.Origin (три столбца матрицы).
| Имя | Тип | По умолчанию |
|---|---|---|
xx | float | — |
xy | float | — |
yx | float | — |
yy | float | — |
ox | float | — |
oy | float | — |
xxX компонент вектора X, доступ через t.X.X или [0][0].
xyY компонент вектора X, доступ через t.X.Y или [0][1].
yxКомпонент X вектора Y, доступ через t.Y.X или [1][0].
yyY компонент вектора Y, доступ к которому обеспечивается через t.Y.Y или [1][1].
oxX компонент вектора происхождения, доступ через t.Origin.X или [2][0].
oyКомпонент Y вектора происхождения, доступ через t.Origin.Y или [2][1].
Свойства8
FlipXСвойство
public static Transform2D FlipX { get; }Когда любое преобразование умножается на Transform2D.FlipX, оно инвертирует все компоненты оси Transform2D.X (столбец X).
Когда Transform2D.FlipX умножается на любое преобразование, оно инвертирует компонент Vector2.X всех осей (строка X).
FlipYСвойство
public static Transform2D FlipY { get; }Когда любое преобразование умножается на Transform2D.FlipY, оно инвертирует все компоненты оси Transform2D.Y (столбец Y).
Когда Transform2D.FlipY умножается на любое преобразование, оно инвертирует компонент Vector2.Y всех осей (строка Y).
IdentityСвойство
public static Transform2D Identity { get; }Единичное преобразование без переноса, поворота и изменения масштаба. В C# new Transform2D() без аргументов даёт нули, поэтому не заменяет Identity.
Item2 перегрузки
public Vector2 this[int column] { get; set; }Целые колонки в виде Vector2.
Третья колонка: Transform2D.Origin Вектор.
public float this[int column, int row] { get; set; }Элементы матрицы доступа в основном столбце.
Третья колонка: Transform2D.Origin Вектор.
RotationСвойство
public float Rotation { get; }Возвращает вращение трансформатора (в радианах).
ScaleСвойство
public Vector2 Scale { get; }Возвращает весы.
SkewСвойство
public float Skew { get; }Возвращает скейв трансформации (в радианах).
Методы29
AffineInverseTransform2D
public Transform2D AffineInverse();Обратное аффинное преобразование, включая масштаб. Определитель должен быть ненулевым; при точном нуле выбрасывает InvalidOperationException.
Transform2DОбратное значение. При точном нулевом определителе результат не возвращается: выбрасывается InvalidOperationException.
BasisXformVector2
public Vector2 BasisXform(Vector2 v);Преобразует вектор базисом без переноса Origin. Масштаб и скос сохраняются; для единичного направления нормализуйте результат отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
v | Vector2 | — |
vВектор без позиционного переноса.
Vector2Вектор после применения базиса, без переноса.
BasisXformInvVector2
public Vector2 BasisXformInv(Vector2 v);Применяет транспонированный базис без переноса. Это обратное преобразование только для ортонормированного базиса; при масштабе или скосе используйте AffineInverse().BasisXform(v).
| Имя | Тип | По умолчанию |
|---|---|---|
v | Vector2 | — |
vВектор без позиционного переноса.
Vector2Вектор после применения транспонированного базиса; корректный обратный результат требует ортонормированности.
Determinantfloat
public float Determinant();Возвращает определитель базиса X.X * Y.Y - X.Y * Y.X. Ноль означает необратимость, отрицательное значение — смену ориентации; перенос не влияет на результат.
floatЗнаковый определитель базиса без учёта Origin.
Equals2 перегрузки
public bool Equals(Transform2D other);Returns (Возврат) true если преобразования в точности равны.
Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании
Transform2D.IsEqualApprox вместо этого, что более надежно.
| Имя | Тип | По умолчанию |
|---|---|---|
other | Transform2D | — |
otherДругая трансформация для сравнения.
boolТочно ли матрицы равны.
public override bool Equals(object? obj);Returns (Возврат) true если преобразование точно равно
к данному объектуobj).
Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании
Transform2D.IsEqualApprox вместо этого, что более надежно.
| Имя | Тип | По умолчанию |
|---|---|---|
obj | object | — |
objОбъект, с которым можно сравниться.
boolПреобразование или нет, и объект абсолютно равны.
GetHashCodeint
public override int GetHashCode();Выполняет функцию хеширования Transform2D.
intКод хэша для этого преобразования.
InterpolateWithTransform2D
public Transform2D InterpolateWith(Transform2D transform, float weight);Возвращает результат линейной интерполяции между этим преобразованием и xform по заданному weight.
weight должен быть между 0.0 и 1.0 (включительно). Значения вне этого диапазона разрешены и могут использоваться для выполнения экстраполяции.
| Имя | Тип | По умолчанию |
|---|---|---|
transform | Transform2D | — |
weight | float | — |
transformДругая трансформация.
weightЗначение на диапазоне от 0,0 до 1,0, представляющее собой величину интерполяции.
Transform2DИнтерполярная трансформация.
InverseTransform2D
public Transform2D Inverse();Быстрая обратная операция для ортонормированных осей. Для обратимого масштаба используйте AffineInverse.
Transform2DОбратная матрица.
IsEqualApproxbool
public bool IsEqualApprox(Transform2D other);Возвращает true, если это преобразование и xform приблизительно равны, путем запуска @GlobalScope.is_equal_approx для каждого компонента.
| Имя | Тип | По умолчанию |
|---|---|---|
other | Transform2D | — |
otherДругая трансформация для сравнения.
boolЯвляется ли матрица приблизительно равной.
IsFinitebool
public bool IsFinite();Возвращает true, если это преобразование конечно, вызывая @GlobalScope.is_finite для каждого компонента.
boolЯвляется ли этот вектор конечным или нет.
OrthonormalizedTransform2D
public Transform2D Orthonormalized();Возвращает копию этого преобразования с ортонормированным базисом. Ортонормированный базис является как ортогональным (оси перпендикулярны друг другу), так и нормализованным (оси имеют длину 1.0), что также означает, что он может представлять только поворот.
Transform2DОртонормализованное преобразование.
RotatedTransform2D
public Transform2D Rotated(float angle);Возвращает копию этого преобразования, повернутую на заданный angle (в радианах).
Если angle положительно, преобразование поворачивается по часовой стрелке.
Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование поворота R слева, т. е. R * X.
Это можно рассматривать как преобразование относительно глобального/родительского кадра.
| Имя | Тип | По умолчанию |
|---|---|---|
angle | float | — |
angleУгол поворота в радианах.
Transform2DПоворачивающаяся матрица преобразования.
RotatedLocalTransform2D
public Transform2D RotatedLocal(float angle);Возвращает копию преобразования, повернутую на заданный angle (в радианах).
Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование поворота R справа, т. е. X * R.
Это можно рассматривать как преобразование относительно локального кадра.
| Имя | Тип | По умолчанию |
|---|---|---|
angle | float | — |
angleУгол поворота в радианах.
Transform2DПоворачивающаяся матрица преобразования.
ScaledTransform2D
public Transform2D Scaled(Vector2 scale);Возвращает копию преобразования, масштабированную заданным коэффициентом scale.
Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее масштабирующее преобразование S слева, т. е. S * X.
Это можно рассматривать как преобразование относительно глобального/родительского кадра.
| Имя | Тип | По умолчанию |
|---|---|---|
scale | Vector2 | — |
scaleМасштаб для введения.
Transform2DРасширенная матрица преобразований.
ScaledLocalTransform2D
public Transform2D ScaledLocal(Vector2 scale);Возвращает копию преобразования, масштабированную заданным коэффициентом scale.
Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее масштабирующее преобразование S справа, т. е. X * S.
Это можно рассматривать как преобразование относительно локального кадра.
Перевод:
| Имя | Тип | По умолчанию |
|---|---|---|
scale | Vector2 | — |
scaleМасштаб для введения.
Transform2DРасширенная матрица преобразований.
ToString2 перегрузки
public override string ToString();Преобразует это Transform2D к а string.
stringA string :: представление этого преобразования.
public string ToString(string? format);Преобразует это Transform2D к а string с указанным format.
| Имя | Тип | По умолчанию |
|---|---|---|
format | string | — |
stringA string :: представление этого преобразования.
TranslatedTransform2D
public Transform2D Translated(Vector2 offset);Возвращает копию преобразования, переведенную на заданное offset.
Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование перевода T слева, т. е. T * X.
Это можно рассматривать как преобразование относительно глобального/родительского фрейма.
| Имя | Тип | По умолчанию |
|---|---|---|
offset | Vector2 | — |
offsetКомпенсация на перевод.
Transform2DПереведенная матрица.
TranslatedLocalTransform2D
public Transform2D TranslatedLocal(Vector2 offset);Возвращает копию преобразования, переведенную на заданное offset.
Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование перевода T справа, т. е. X * T.
Это можно рассматривать как преобразование относительно локального фрейма.
| Имя | Тип | По умолчанию |
|---|---|---|
offset | Vector2 | — |
offsetКомпенсация на перевод.
Transform2DПереведенная матрица.
op_Equalitybool
public static bool operator ==(Transform2D left, Transform2D right);Returns (Возврат) true если преобразования в точности равны.
Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании
Transform2D.IsEqualApprox вместо этого, что более надежно.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Transform2D | — |
right | Transform2D | — |
leftЛевую трансформацию.
rightПравильное преобразование.
boolТочно ли равны трансформации.
op_Inequalitybool
public static bool operator !=(Transform2D left, Transform2D right);Returns (Возврат) true если преобразования не равны.
Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании
Transform2D.IsEqualApprox вместо этого, что более надежно.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Transform2D | — |
right | Transform2D | — |
leftЛевую трансформацию.
rightПравильное преобразование.
boolНе равны ли трансформации?
op_Multiply7 перегрузок
public static Rect2 operator *(Rect2 rect, Transform2D transform);Возвращается a Rect2 преобразованная (многократно) матрицей обратного преобразования, при том предположении, что основа преобразования является ортопедической (т.е. вращение/отражение)
- в порядке, масштабирование/скайв - нет).
rect * transformэквивалентенtransform.Inverse() * rectСм.Transform2D.Inverse. Преобразование в обратном направлении аффилированного преобразования (например, при масштабировании)transform.AffineInverse() * rectвместо этого можно использовать. См.Transform2D.AffineInverse.
| Имя | Тип | По умолчанию |
|---|---|---|
rect | Rect2 | — |
transform | Transform2D | — |
rectA Rect2 Чтобы обратно преобразоваться.
transformПреобразование будет применяться.
Rect2Обратно преобразующиеся Rect2.
public static Rect2 operator *(Transform2D transform, Rect2 rect);Возвращается a Rect2 Преобразован (многократно) в матрицу преобразования.
| Имя | Тип | По умолчанию |
|---|---|---|
transform | Transform2D | — |
rect | Rect2 | — |
transformПреобразование будет применяться.
rectA Rect2 Преобразовать.
Rect2Преобразованные Rect2.
public static Transform2D operator *(Transform2D left, Transform2D right);Составляет преобразования: left * right сначала применяет right, затем left. Для иерархии это преобразование родителя, умноженное на преобразование дочернего объекта.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Transform2D | — |
right | Transform2D | — |
leftВнешнее преобразование, применяемое вторым.
rightВнутреннее преобразование, применяемое первым.
Transform2DСоставное преобразование left * right.
public static Vector2 operator *(Transform2D transform, Vector2 vector);Преобразует точку базисом и добавляет Origin. Для направления без переноса используйте BasisXform.
| Имя | Тип | По умолчанию |
|---|---|---|
transform | Transform2D | — |
vector | Vector2 | — |
transformПреобразование; обратный порядок с Vector2 требует ортонормированного базиса.
vectorТочка в исходной системе координат.
Vector2Точка в результирующей системе координат с ограничениями этого оператора.
public static Vector2[] operator *(Transform2D transform, Vector2[] array);Возвращает копию данного документа Vector2[] преобразуется (многократно) в матрицу преобразования.
| Имя | Тип | По умолчанию |
|---|---|---|
transform | Transform2D | — |
array | Vector2[] | — |
transformПреобразование будет применяться.
arrayA Vector2[] преобразовать.
Vector2[]Преобразованная копия Vector2[].
public static Vector2 operator *(Vector2 vector, Transform2D transform);Преобразует точку обратным преобразованием при ортонормированном базисе. При масштабе или скосе этот порядок операндов не заменяет transform.AffineInverse() * vector.
| Имя | Тип | По умолчанию |
|---|---|---|
vector | Vector2 | — |
transform | Transform2D | — |
vectorТочка в исходной системе координат.
transformПреобразование; обратный порядок с Vector2 требует ортонормированного базиса.
Vector2Точка в результирующей системе координат с ограничениями этого оператора.
public static Vector2[] operator *(Vector2[] array, Transform2D transform);Возвращает копию данного документа Vector2[] преобразуется (многократно) в матрицу обратного преобразования, при том предположении, что основа преобразования является ортопедической (т.е. вращение/отражение)
- в порядке, масштабирование/скайв - нет).
array * transformэквивалентенtransform.Inverse() * arrayСм.Transform2D.Inverse. Преобразование в обратном направлении аффилированного преобразования (например, при масштабировании)transform.AffineInverse() * arrayвместо этого можно использовать. См.Transform2D.AffineInverse.
| Имя | Тип | По умолчанию |
|---|---|---|
array | Vector2[] | — |
transform | Transform2D | — |
arrayA Vector2[] обратную трансформацию.
transformПреобразование будет применяться.
Vector2[]Обратно преобразованная копия Vector2[].
Поля и константы3
OriginПоле
public Vector2 Origin;Перенос, применяемый при преобразовании точки. BasisXform преобразует только базис и не добавляет Origin.
XПоле
public Vector2 X;Первый столбец базиса: образ локальной оси X. Не включает перенос Origin.
YПоле
public Vector2 Y;Второй столбец базиса: образ локальной оси Y. В обычных координатах 2D положительная Y направлена вниз.