reckfellENGINE

Transform2D

Две оси и перенос 2D-преобразования.

На этой странице
struct Transform2DReckfellSharpНаследует ValueType

Умножение transform × point применяет обе оси и Origin. При композиции parent × child правое преобразование действует первым. В обычном экранном 2D положительный поворот выглядит по часовой стрелке из-за Y вниз.

Inverse и обратная запись point × transform предполагают ортонормированный базис. Для обратимого масштаба используйте AffineInverse. При нулевом определителе обратного преобразования нет. Значение является C#-структурой: после правки копии присвойте её обратно свойству Entity.

Практическое руководство.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы4

Transform2D4 перегрузки
# Transform2D · 1/4
C#
public Transform2D(Vector2 xAxis, Vector2 yAxis, Vector2 originPos);

Создаёт преобразование из двух столбцов базиса и переноса. Векторы xAxis и yAxis — столбцы, не строки матрицы.

Параметры
ИмяТипПо умолчанию
xAxisVector2—
yAxisVector2—
originPosVector2—
xAxis

Первый столбец базиса.

yAxis

Второй столбец базиса.

originPos

Перенос Origin.

# Transform2D · 2/4
C#
public Transform2D(float rotation, Vector2 origin);

Создаёт преобразование с поворотом в радианах и переносом. Базис имеет единичный масштаб и нулевой скос; положительный поворот переводит Right в сторону Down в обычном 2D.

Параметры
ИмяТипПо умолчанию
rotationfloat—
originVector2—
rotation

Поворот в радианах.

origin

Перенос Origin.

# Transform2D · 3/4
C#
public Transform2D(float rotation, Vector2 scale, float skew, Vector2 origin);

Создаёт преобразование из поворота, масштаба, скоса и переноса. Поворот и скос задаются в радианах; нулевой масштаб может сделать базис необратимым.

Параметры
ИмяТипПо умолчанию
rotationfloat—
scaleVector2—
skewfloat—
originVector2—
rotation

Поворот в радианах.

scale

Масштаб по локальным осям X и Y.

skew

Скос в радианах.

origin

Перенос Origin.

# Transform2D · 4/4
C#
public Transform2D(float xx, float xy, float yx, float yy, float ox, float oy);

Создает Transform2D из 3 значений Vector2, представляющих Transform2D.X, Transform2D.Y и Transform2D.Origin (три столбца матрицы).

Параметры
ИмяТипПо умолчанию
xxfloat—
xyfloat—
yxfloat—
yyfloat—
oxfloat—
oyfloat—
xx

X компонент вектора X, доступ через t.X.X или [0][0].

xy

Y компонент вектора X, доступ через t.X.Y или [0][1].

yx

Компонент X вектора Y, доступ через t.Y.X или [1][0].

yy

Y компонент вектора Y, доступ к которому обеспечивается через t.Y.Y или [1][1].

ox

X компонент вектора происхождения, доступ через t.Origin.X или [2][0].

oy

Компонент Y вектора происхождения, доступ через t.Origin.Y или [2][1].

Свойства8

FlipXСвойство
# FlipX
C#
public static Transform2D FlipX { get; }

Когда любое преобразование умножается на Transform2D.FlipX, оно инвертирует все компоненты оси Transform2D.X (столбец X). Когда Transform2D.FlipX умножается на любое преобразование, оно инвертирует компонент Vector2.X всех осей (строка X).

FlipYСвойство
# FlipY
C#
public static Transform2D FlipY { get; }

Когда любое преобразование умножается на Transform2D.FlipY, оно инвертирует все компоненты оси Transform2D.Y (столбец Y). Когда Transform2D.FlipY умножается на любое преобразование, оно инвертирует компонент Vector2.Y всех осей (строка Y).

IdentityСвойство
# Identity
C#
public static Transform2D Identity { get; }

Единичное преобразование без переноса, поворота и изменения масштаба. В C# new Transform2D() без аргументов даёт нули, поэтому не заменяет Identity.

Item2 перегрузки
# Item · 1/2
C#
public Vector2 this[int column] { get; set; }

Целые колонки в виде Vector2. Третья колонка: Transform2D.Origin Вектор.

# Item · 2/2
C#
public float this[int column, int row] { get; set; }

Элементы матрицы доступа в основном столбце. Третья колонка: Transform2D.Origin Вектор.

RotationСвойство
# Rotation
C#
public float Rotation { get; }

Возвращает вращение трансформатора (в радианах).

ScaleСвойство
# Scale
C#
public Vector2 Scale { get; }

Возвращает весы.

SkewСвойство
# Skew
C#
public float Skew { get; }

Возвращает скейв трансформации (в радианах).

Методы29

AffineInverseTransform2D
# AffineInverse
C#
public Transform2D AffineInverse();

Обратное аффинное преобразование, включая масштаб. Определитель должен быть ненулевым; при точном нуле выбрасывает InvalidOperationException.

Возвращает Transform2D

Обратное значение. При точном нулевом определителе результат не возвращается: выбрасывается InvalidOperationException.

BasisXformVector2
# BasisXform
C#
public Vector2 BasisXform(Vector2 v);

Преобразует вектор базисом без переноса Origin. Масштаб и скос сохраняются; для единичного направления нормализуйте результат отдельно.

Параметры
ИмяТипПо умолчанию
vVector2—
v

Вектор без позиционного переноса.

Возвращает Vector2

Вектор после применения базиса, без переноса.

BasisXformInvVector2
# BasisXformInv
C#
public Vector2 BasisXformInv(Vector2 v);

Применяет транспонированный базис без переноса. Это обратное преобразование только для ортонормированного базиса; при масштабе или скосе используйте AffineInverse().BasisXform(v).

Параметры
ИмяТипПо умолчанию
vVector2—
v

Вектор без позиционного переноса.

Возвращает Vector2

Вектор после применения транспонированного базиса; корректный обратный результат требует ортонормированности.

Determinantfloat
# Determinant
C#
public float Determinant();

Возвращает определитель базиса X.X * Y.Y - X.Y * Y.X. Ноль означает необратимость, отрицательное значение — смену ориентации; перенос не влияет на результат.

Возвращает float

Знаковый определитель базиса без учёта Origin.

Equals2 перегрузки
# Equals · 1/2
C#
public bool Equals(Transform2D other);

Returns (Возврат) true если преобразования в точности равны. Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании Transform2D.IsEqualApprox вместо этого, что более надежно.

Параметры
ИмяТипПо умолчанию
otherTransform2D—
other

Другая трансформация для сравнения.

Возвращает bool

Точно ли матрицы равны.

# Equals · 2/2
C#
public override bool Equals(object? obj);

Returns (Возврат) true если преобразование точно равно к данному объектуobj). Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании Transform2D.IsEqualApprox вместо этого, что более надежно.

Параметры
ИмяТипПо умолчанию
objobject—
obj

Объект, с которым можно сравниться.

Возвращает bool

Преобразование или нет, и объект абсолютно равны.

GetHashCodeint
# GetHashCode
C#
public override int GetHashCode();

Выполняет функцию хеширования Transform2D.

Возвращает int

Код хэша для этого преобразования.

InterpolateWithTransform2D
# InterpolateWith
C#
public Transform2D InterpolateWith(Transform2D transform, float weight);

Возвращает результат линейной интерполяции между этим преобразованием и xform по заданному weight. weight должен быть между 0.0 и 1.0 (включительно). Значения вне этого диапазона разрешены и могут использоваться для выполнения экстраполяции.

Параметры
ИмяТипПо умолчанию
transformTransform2D—
weightfloat—
transform

Другая трансформация.

weight

Значение на диапазоне от 0,0 до 1,0, представляющее собой величину интерполяции.

Возвращает Transform2D

Интерполярная трансформация.

InverseTransform2D
# Inverse
C#
public Transform2D Inverse();

Быстрая обратная операция для ортонормированных осей. Для обратимого масштаба используйте AffineInverse.

Возвращает Transform2D

Обратная матрица.

IsEqualApproxbool
# IsEqualApprox
C#
public bool IsEqualApprox(Transform2D other);

Возвращает true, если это преобразование и xform приблизительно равны, путем запуска @GlobalScope.is_equal_approx для каждого компонента.

Параметры
ИмяТипПо умолчанию
otherTransform2D—
other

Другая трансформация для сравнения.

Возвращает bool

Является ли матрица приблизительно равной.

IsFinitebool
# IsFinite
C#
public bool IsFinite();

Возвращает true, если это преобразование конечно, вызывая @GlobalScope.is_finite для каждого компонента.

Возвращает bool

Является ли этот вектор конечным или нет.

OrthonormalizedTransform2D
# Orthonormalized
C#
public Transform2D Orthonormalized();

Возвращает копию этого преобразования с ортонормированным базисом. Ортонормированный базис является как ортогональным (оси перпендикулярны друг другу), так и нормализованным (оси имеют длину 1.0), что также означает, что он может представлять только поворот.

Возвращает Transform2D

Ортонормализованное преобразование.

RotatedTransform2D
# Rotated
C#
public Transform2D Rotated(float angle);

Возвращает копию этого преобразования, повернутую на заданный angle (в радианах). Если angle положительно, преобразование поворачивается по часовой стрелке. Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование поворота R слева, т. е. R * X. Это можно рассматривать как преобразование относительно глобального/родительского кадра.

Параметры
ИмяТипПо умолчанию
anglefloat—
angle

Угол поворота в радианах.

Возвращает Transform2D

Поворачивающаяся матрица преобразования.

RotatedLocalTransform2D
# RotatedLocal
C#
public Transform2D RotatedLocal(float angle);

Возвращает копию преобразования, повернутую на заданный angle (в радианах). Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование поворота R справа, т. е. X * R. Это можно рассматривать как преобразование относительно локального кадра.

Параметры
ИмяТипПо умолчанию
anglefloat—
angle

Угол поворота в радианах.

Возвращает Transform2D

Поворачивающаяся матрица преобразования.

ScaledTransform2D
# Scaled
C#
public Transform2D Scaled(Vector2 scale);

Возвращает копию преобразования, масштабированную заданным коэффициентом scale. Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее масштабирующее преобразование S слева, т. е. S * X. Это можно рассматривать как преобразование относительно глобального/родительского кадра.

Параметры
ИмяТипПо умолчанию
scaleVector2—
scale

Масштаб для введения.

Возвращает Transform2D

Расширенная матрица преобразований.

ScaledLocalTransform2D
# ScaledLocal
C#
public Transform2D ScaledLocal(Vector2 scale);

Возвращает копию преобразования, масштабированную заданным коэффициентом scale. Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее масштабирующее преобразование S справа, т. е. X * S. Это можно рассматривать как преобразование относительно локального кадра.

Перевод:

Параметры
ИмяТипПо умолчанию
scaleVector2—
scale

Масштаб для введения.

Возвращает Transform2D

Расширенная матрица преобразований.

ToString2 перегрузки
# ToString · 1/2
C#
public override string ToString();

Преобразует это Transform2D к а string.

Возвращает string

A string :: представление этого преобразования.

# ToString · 2/2
C#
public string ToString(string? format);

Преобразует это Transform2D к а string с указанным format.

Параметры
ИмяТипПо умолчанию
formatstring—
Возвращает string

A string :: представление этого преобразования.

TranslatedTransform2D
# Translated
C#
public Transform2D Translated(Vector2 offset);

Возвращает копию преобразования, переведенную на заданное offset. Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование перевода T слева, т. е. T * X. Это можно рассматривать как преобразование относительно глобального/родительского фрейма.

Параметры
ИмяТипПо умолчанию
offsetVector2—
offset

Компенсация на перевод.

Возвращает Transform2D

Переведенная матрица.

TranslatedLocalTransform2D
# TranslatedLocal
C#
public Transform2D TranslatedLocal(Vector2 offset);

Возвращает копию преобразования, переведенную на заданное offset. Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование перевода T справа, т. е. X * T. Это можно рассматривать как преобразование относительно локального фрейма.

Параметры
ИмяТипПо умолчанию
offsetVector2—
offset

Компенсация на перевод.

Возвращает Transform2D

Переведенная матрица.

op_Equalitybool
# op_Equality
C#
public static bool operator ==(Transform2D left, Transform2D right);

Returns (Возврат) true если преобразования в точности равны. Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании Transform2D.IsEqualApprox вместо этого, что более надежно.

Параметры
ИмяТипПо умолчанию
leftTransform2D—
rightTransform2D—
left

Левую трансформацию.

right

Правильное преобразование.

Возвращает bool

Точно ли равны трансформации.

op_Inequalitybool
# op_Inequality
C#
public static bool operator !=(Transform2D left, Transform2D right);

Returns (Возврат) true если преобразования не равны. Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании Transform2D.IsEqualApprox вместо этого, что более надежно.

Параметры
ИмяТипПо умолчанию
leftTransform2D—
rightTransform2D—
left

Левую трансформацию.

right

Правильное преобразование.

Возвращает bool

Не равны ли трансформации?

op_Multiply7 перегрузок
# op_Multiply · 1/7
C#
public static Rect2 operator *(Rect2 rect, Transform2D transform);

Возвращается a Rect2 преобразованная (многократно) матрицей обратного преобразования, при том предположении, что основа преобразования является ортопедической (т.е. вращение/отражение)

  • в порядке, масштабирование/скайв - нет). rect * transform эквивалентен transform.Inverse() * rectСм. Transform2D.Inverse. Преобразование в обратном направлении аффилированного преобразования (например, при масштабировании) transform.AffineInverse() * rect вместо этого можно использовать. См. Transform2D.AffineInverse.
Параметры
ИмяТипПо умолчанию
rectRect2—
transformTransform2D—
rect

A Rect2 Чтобы обратно преобразоваться.

transform

Преобразование будет применяться.

Возвращает Rect2

Обратно преобразующиеся Rect2.

# op_Multiply · 2/7
C#
public static Rect2 operator *(Transform2D transform, Rect2 rect);

Возвращается a Rect2 Преобразован (многократно) в матрицу преобразования.

Параметры
ИмяТипПо умолчанию
transformTransform2D—
rectRect2—
transform

Преобразование будет применяться.

rect

A Rect2 Преобразовать.

Возвращает Rect2

Преобразованные Rect2.

# op_Multiply · 3/7
C#
public static Transform2D operator *(Transform2D left, Transform2D right);

Составляет преобразования: left * right сначала применяет right, затем left. Для иерархии это преобразование родителя, умноженное на преобразование дочернего объекта.

Параметры
ИмяТипПо умолчанию
leftTransform2D—
rightTransform2D—
left

Внешнее преобразование, применяемое вторым.

right

Внутреннее преобразование, применяемое первым.

Возвращает Transform2D

Составное преобразование left * right.

# op_Multiply · 4/7
C#
public static Vector2 operator *(Transform2D transform, Vector2 vector);

Преобразует точку базисом и добавляет Origin. Для направления без переноса используйте BasisXform.

Параметры
ИмяТипПо умолчанию
transformTransform2D—
vectorVector2—
transform

Преобразование; обратный порядок с Vector2 требует ортонормированного базиса.

vector

Точка в исходной системе координат.

Возвращает Vector2

Точка в результирующей системе координат с ограничениями этого оператора.

# op_Multiply · 5/7
C#
public static Vector2[] operator *(Transform2D transform, Vector2[] array);

Возвращает копию данного документа Vector2[] преобразуется (многократно) в матрицу преобразования.

Параметры
ИмяТипПо умолчанию
transformTransform2D—
arrayVector2[]—
transform

Преобразование будет применяться.

array

A Vector2[] преобразовать.

Возвращает Vector2[]

Преобразованная копия Vector2[].

# op_Multiply · 6/7
C#
public static Vector2 operator *(Vector2 vector, Transform2D transform);

Преобразует точку обратным преобразованием при ортонормированном базисе. При масштабе или скосе этот порядок операндов не заменяет transform.AffineInverse() * vector.

Параметры
ИмяТипПо умолчанию
vectorVector2—
transformTransform2D—
vector

Точка в исходной системе координат.

transform

Преобразование; обратный порядок с Vector2 требует ортонормированного базиса.

Возвращает Vector2

Точка в результирующей системе координат с ограничениями этого оператора.

# op_Multiply · 7/7
C#
public static Vector2[] operator *(Vector2[] array, Transform2D transform);

Возвращает копию данного документа Vector2[] преобразуется (многократно) в матрицу обратного преобразования, при том предположении, что основа преобразования является ортопедической (т.е. вращение/отражение)

  • в порядке, масштабирование/скайв - нет). array * transform эквивалентен transform.Inverse() * arrayСм. Transform2D.Inverse. Преобразование в обратном направлении аффилированного преобразования (например, при масштабировании) transform.AffineInverse() * array вместо этого можно использовать. См. Transform2D.AffineInverse.
Параметры
ИмяТипПо умолчанию
arrayVector2[]—
transformTransform2D—
array

A Vector2[] обратную трансформацию.

transform

Преобразование будет применяться.

Возвращает Vector2[]

Обратно преобразованная копия Vector2[].

Поля и константы3

OriginПоле
# Origin
C#
public Vector2 Origin;

Перенос, применяемый при преобразовании точки. BasisXform преобразует только базис и не добавляет Origin.

XПоле
# X
C#
public Vector2 X;

Первый столбец базиса: образ локальной оси X. Не включает перенос Origin.

YПоле
# Y
C#
public Vector2 Y;

Второй столбец базиса: образ локальной оси Y. В обычных координатах 2D положительная Y направлена вниз.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.