Quaternion
Кватернион для представления и интерполяции 3D-поворота.
Для вращения используйте единичный Quaternion. Quaternion.Identity задаёт отсутствие поворота; нулевая структура не является тождественным вращением. Slerp интерполирует ориентации; это не покомпонентное усреднение углов Euler.
Входы должны быть нормализованы, а вес задаёт долю перехода. Совпадающие ориентации могут иметь противоположные знаки всех компонент кватерниона, поэтому сравнение сырых компонент не заменяет сравнение поворота. Поворот не хранит перенос или масштаб Entity.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы4
Quaternion4 перегрузки
public Quaternion(Basis basis);Создает Quaternion, определенный заданными значениями.
Примечание: Только нормализованные кватернионы представляют вращение; если эти значения не нормализованы, новый Quaternion не будет допустимым для вращения.
| Имя | Тип | По умолчанию |
|---|---|---|
basis | Basis | — |
basis:: Basis чтобы строить из.
public Quaternion(Vector3 arcFrom, Vector3 arcTo);Создает Quaternion, определенный заданными значениями.
Примечание: Только нормализованные кватернионы представляют вращение; если эти значения не нормализованы, новый Quaternion не будет допустимым для вращения.
| Имя | Тип | По умолчанию |
|---|---|---|
arcFrom | Vector3 | — |
arcTo | Vector3 | — |
public Quaternion(Vector3 axis, float angle);Создает Quaternion, определенный заданными значениями.
Примечание: Только нормализованные кватернионы представляют вращение; если эти значения не нормализованы, новый Quaternion не будет допустимым для вращения.
| Имя | Тип | По умолчанию |
|---|---|---|
axis | Vector3 | — |
angle | float | — |
axisОсь, чтобы повернуться, должна быть нормализована.
angleУгол поворота в радианах.
public Quaternion(float x, float y, float z, float w);Создает Quaternion, определенный заданными значениями.
Примечание: Только нормализованные кватернионы представляют вращение; если эти значения не нормализованы, новый Quaternion не будет допустимым для вращения.
| Имя | Тип | По умолчанию |
|---|---|---|
x | float | — |
y | float | — |
z | float | — |
w | float | — |
xX компонент кватерниона (императивный элемент) i часть оси).
yY компонент кватерниона (императивный) j часть оси).
zZ компонент кватерниона (императивный) k часть оси).
wW компонент кватерниона (реальная часть).
Свойства2
IdentityСвойство
public static Quaternion Identity { get; }Идентификационный кватер, не представляющий собой вращение. Basis.Identity.
Если a Vector3 Поворачивается (многократно) этим кватернионом, он не меняется.
Примечание: В C# эта константа эквивалентна созданию a [конструктор Quaternion] без каких-либо аргументов. Он может быть использован для того, чтобы сделать ваш код более ясным и чтобы он соответствовал C#.
ItemСвойство
public float this[int index] { get; set; }Доступ к компонентам кватерниона с использованием их индекса.
Методы36
AngleTofloat
public float AngleTo(Quaternion to);Возвращает угол между этим кватернионом и to. Это величина угла, на который вам нужно повернуть, чтобы перейти от одного к другому.
Примечание: Величина ошибки с плавающей точкой для этого метода аномально высока, поэтому такие методы, как is_zero_approx, не будут работать надежно.
| Имя | Тип | По умолчанию |
|---|---|---|
to | Quaternion | — |
toДругой кватернион.
floatУгол между кватернионами.
Dotfloat
public float Dot(Quaternion b);Возвращает скалярное произведение между этим кватернионом и with.
Это эквивалентно (quat.x * with.x) + (quat.y * with.y) + (quat.z * with.z) + (quat.w * with.w).
| Имя | Тип | По умолчанию |
|---|---|---|
b | Quaternion | — |
bДругой кватернион.
floatСкалярное произведение.
Equals2 перегрузки
public bool Equals(Quaternion other);Returns (Возврат) true если этот кватерион и other равны.
| Имя | Тип | По умолчанию |
|---|---|---|
other | Quaternion | — |
otherДругой кватернион для сравнения.
boolНеважно, равны ли кватернионы.
public override bool Equals(object? obj);Returns (Возврат) true если этот кватерион и obj равны.
| Имя | Тип | По умолчанию |
|---|---|---|
obj | object | — |
objДругой объект для сравнения.
boolЯвляется ли кватерион и другой объект точно равны.
ExpQuaternion
public Quaternion Exp();Возвращает экспоненту этого кватерниона. Ось вращения результата — нормализованная ось вращения этого кватерниона, угол результата — длина векторной части этого кватерниона.
QuaternionFromEulerQuaternion
public static Quaternion FromEuler(Vector3 eulerYXZ);Создает новый Quaternion из заданного Vector3, углов Эйлера в радианах. В Reckfell углы Эйлера всегда используют внутренний порядок. Этот метод всегда использует внутреннюю конвенцию YXZ (EULER_ORDER_YXZ).
| Имя | Тип | По умолчанию |
|---|---|---|
eulerYXZ | Vector3 | — |
eulerYXZУглы Эйлера, по которым кватер будет вращаться.
QuaternionGetAnglefloat
public float GetAngle();Возвращает угол поворота, представленный этим кватернионом. Примечание: Кватернион должен быть нормализован.
floatGetAxisVector3
public Vector3 GetAxis();Возвращает ось вращения, представленную этим кватернионом.
Vector3GetEulerVector3
public Vector3 GetEuler(EulerOrder order = EulerOrder.Yxz);Возвращает вращение этого кватерниона как Vector3 углов Эйлера в радианах.
Порядок каждого последовательного вращения можно изменить с помощью order (см. константы EulerOrder). По умолчанию используется соглашение YXZ (EULER_ORDER_YXZ): сначала вычисляется Z (roll), затем X (pitch) и, наконец, Y (yaw). При использовании противоположного метода Quaternion.FromEuler этот порядок меняется на обратный.
| Имя | Тип | По умолчанию |
|---|---|---|
order | EulerOrder | EulerOrder.Yxz |
Vector3Отражение угла Эйлера этого кватерниона.
GetHashCodeint
public override int GetHashCode();Выполняет функцию хеширования Quaternion.
intКод хэша для этого кватерниона.
InverseQuaternion
public Quaternion Inverse();Возвращает обратную версию этого кватерниона, инвертируя знак каждого компонента, кроме Quaternion.W.
###=равный_ примерно
QuaternionОбратный кватерион.
IsEqualApproxbool
public bool IsEqualApprox(Quaternion other);Возвращает true, если этот кватернион и to приблизительно равны, вызывая @GlobalScope.is_equal_approx для каждого компонента.
| Имя | Тип | По умолчанию |
|---|---|---|
other | Quaternion | — |
otherДругой кватернион для сравнения.
boolВне зависимости от того, равны ли кватернионы.
IsFinitebool
public bool IsFinite();Возвращает true, если этот кватернион конечен, вызывая @GlobalScope.is_finite для каждого компонента.
boolЯвляется ли этот вектор конечным или нет.
IsNormalizedbool
public bool IsNormalized();Возвращает true, если этот кватернион нормализован. См. также Quaternion.Normalized.
boolA bool для того, нормализован ли кватерион или нет.
Lengthfloat
public float Length();Возвращает длину этого кватерниона, также называемую величиной.
floatLengthSquaredfloat
public float LengthSquared();Возвращает длину этого кватерниона, возведенную в квадрат.
Примечание: Этот метод быстрее, чем Quaternion.Length, поэтому предпочитайте его, если вам нужно только сравнить длины кватернионов.
floatLogQuaternion
public Quaternion Log();Возвращает логарифм этого кватерниона. Умножает ось вращения этого кватерниона на его угол вращения и сохраняет результат в векторной части возвращаемого кватерниона (Quaternion.X, Quaternion.Y и Quaternion.Z). Действительная часть возвращаемого кватерниона (Quaternion.W) всегда равна 0.0.
QuaternionNormalizedQuaternion
public Quaternion Normalized();Возвращает копию этого кватерниона, нормализованную так, что ее длина равна 1.0. См. также Quaternion.IsNormalized.
QuaternionНормализованный кватерион.
SlerpQuaternion
public Quaternion Slerp(Quaternion to, float weight);Сферически интерполирует между единичными кватернионами ориентации. Вес задаёт долю перехода, а не угловую скорость или секунды.
| Имя | Тип | По умолчанию |
|---|---|---|
to | Quaternion | — |
weight | float | — |
toКватерион назначения для интерполяции должен быть нормализован
weightЗначение на диапазоне от 0,0 до 1,0, представляющее собой величину интерполяции.
QuaternionВытекающий кватерион интерполяции.
SlerpniQuaternion
public Quaternion Slerpni(Quaternion to, float weight);Выполняет сферически-линейную интерполяцию с кватернионом to, заданным weight и возвращает результат. В отличие от Quaternion.Slerp, этот метод не проверяет, является ли путь вращения меньше 90 градусов. И этот кватернион, и to должны быть нормализованы.
| Имя | Тип | По умолчанию |
|---|---|---|
to | Quaternion | — |
weight | float | — |
toКватерион назначения для интерполяции должен быть нормализован
weightЗначение на диапазоне от 0,0 до 1,0, представляющее собой величину интерполяции.
QuaternionВытекающий кватерион интерполяции.
SphericalCubicInterpolateQuaternion
public Quaternion SphericalCubicInterpolate(Quaternion b, Quaternion preA, Quaternion postB, float weight);Осуществляет сферическую кубическую интерполяцию между кватернионами pre_a, этот кватерион, b, и post_bна указанную сумму weight.
| Имя | Тип | По умолчанию |
|---|---|---|
b | Quaternion | — |
preA | Quaternion | — |
postB | Quaternion | — |
weight | float | — |
bКватерион назначения.
preAКватернион перед этим кватерноном.
postBКватернион после b.
weightЗначение на диапазоне от 0,0 до 1,0, представляющее собой величину интерполяции.
QuaternionМежполюсный кватерион.
SphericalCubicInterpolateInTimeQuaternion
public Quaternion SphericalCubicInterpolateInTime(Quaternion b, Quaternion preA, Quaternion postB, float weight, float bT, float preAT, float postBT);Осуществляет сферическую кубическую интерполяцию между кватернионами pre_a, этот кватерион, b, и post_bна указанную сумму weight.
Он может осуществлять более гладкую интерполяцию, чем Quaternion.SphericalCubicInterpolate по временным значениям.
| Имя | Тип | По умолчанию |
|---|---|---|
b | Quaternion | — |
preA | Quaternion | — |
postB | Quaternion | — |
weight | float | — |
bT | float | — |
preAT | float | — |
postBT | float | — |
bКватерион назначения.
preAКватернион перед этим кватерноном.
postBКватернион после b.
weightЗначение на диапазоне от 0,0 до 1,0, представляющее собой величину интерполяции.
QuaternionМежполюсный кватерион.
ToString2 перегрузки
public override string ToString();Преобразует это Quaternion к а string.
stringA string представительство этого кватерниона.
public string ToString(string? format);Преобразует это Quaternion к а string с указанным format.
| Имя | Тип | По умолчанию |
|---|---|---|
format | string | — |
stringA string представительство этого кватерниона.
op_AdditionQuaternion
public static Quaternion operator +(Quaternion left, Quaternion right);Добавить каждый элемент левой части Quaternion
права человека Quaternion. Эта операция не проводится
Они имеют значение сами по себе, но могут быть использованы в качестве части
более масштабное выражение, например приблизительное обозначение промежуточного
ротация между двумя близлежащими вращениями.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Quaternion | — |
right | Quaternion | — |
leftКватерион слева добавить.
rightПравый кватерион добавить.
QuaternionДобавленный кватерион.
op_DivisionQuaternion
public static Quaternion operator /(Quaternion left, float right);Разделяет каждый компонент Quaternion
Клянусь данным System.Single. Эта операция не проводится
Они имеют значение сами по себе, но могут быть использованы в качестве части
Большее выражение.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Quaternion | — |
right | float | — |
leftКватернион, чтобы разделить.
rightЦенность разделить на.
QuaternionРазделенный кватернион.
op_Equalitybool
public static bool operator ==(Quaternion left, Quaternion right);Returns (Возврат) true если кватернионы в точности равны.
Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании
Quaternion.IsEqualApprox вместо этого, что более надежно.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Quaternion | — |
right | Quaternion | — |
leftЛевый кватерион.
rightПравый кватерион.
boolНеважно, равны ли кватернионы.
op_Inequalitybool
public static bool operator !=(Quaternion left, Quaternion right);Returns (Возврат) true если кватернионы не равны.
Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании
Quaternion.IsEqualApprox вместо этого, что более надежно.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Quaternion | — |
right | Quaternion | — |
leftЛевый кватерион.
rightПравый кватерион.
boolНе равны ли кватернионы?
op_Multiply5 перегрузок
public static Quaternion operator *(Quaternion left, Quaternion right);Составляет эти два кватерниона, умножая их вместе. Это приводит к вращению второго кватерниона. (ребенка) первым кватерноном (родителя).
| Имя | Тип | По умолчанию |
|---|---|---|
left | Quaternion | — |
right | Quaternion | — |
leftРодительский кватерион.
rightДетский кватерион.
QuaternionСостоящий кватернион.
public static Vector3 operator *(Quaternion quaternion, Vector3 vector);Возвращается a Vector3 Поворачивается (многократно) на кватернион.
| Имя | Тип | По умолчанию |
|---|---|---|
quaternion | Quaternion | — |
vector | Vector3 | — |
quaternionКатернион, чтобы ехать.
vectorA Vector3 Преобразовать.
Vector3Поворачивается Vector3.
public static Quaternion operator *(Quaternion left, float right);Множить каждый элемент Quaternion
Клянусь данным System.Single. Эта операция не проводится
Они имеют значение сами по себе, но могут быть использованы в качестве части
Большее выражение.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Quaternion | — |
right | float | — |
leftКватернион умножить.
rightЗначение умножения на.
QuaternionМножественный кватерион.
public static Vector3 operator *(Vector3 vector, Quaternion quaternion);Возвращается a Vector3 Поворачивается (многократно) на обратный кватерион.
vector * quaternion эквивалентен quaternion.Inverse() * vectorСм. Quaternion.Inverse.
| Имя | Тип | По умолчанию |
|---|---|---|
vector | Vector3 | — |
quaternion | Quaternion | — |
vectorA Vector3 Обратно вращаться.
quaternionКатернион, чтобы ехать.
Vector3Обратно поворачивается Vector3.
public static Quaternion operator *(float left, Quaternion right);Множить каждый элемент Quaternion
Клянусь данным System.Single. Эта операция не проводится
Они имеют значение сами по себе, но могут быть использованы в качестве части
Большее выражение.
| Имя | Тип | По умолчанию |
|---|---|---|
left | float | — |
right | Quaternion | — |
leftЗначение умножения на.
rightКватернион умножить.
QuaternionМножественный кватерион.
op_SubtractionQuaternion
public static Quaternion operator -(Quaternion left, Quaternion right);Вычитает каждый элемент левой части Quaternion
правой Quaternion. Эта операция не проводится
Они имеют значение сами по себе, но могут быть использованы в качестве части
Большее выражение.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Quaternion | — |
right | Quaternion | — |
leftЛевый кватернион вычитать.
rightПравый кватернион вычитать.
QuaternionВычтенный кватерион.
op_UnaryNegationQuaternion
public static Quaternion operator -(Quaternion quat);Возвращает отрицательную стоимость Quaternion.
Это то же самое, что и написание
new Quaternion(-q.X, -q.Y, -q.Z, -q.W)Эта операция
получается кватерион, который представляет собой такое же вращение.
| Имя | Тип | По умолчанию |
|---|---|---|
quat | Quaternion | — |
quatКватернион отрицающий.
QuaternionОтрицаемый кватернион.
op_UnaryPlusQuaternion
public static Quaternion operator +(Quaternion quat);Возвращает то же значение, как если бы + не было. Унарный + ничего не делает, но иногда он может сделать ваш код более читаемым.
| Имя | Тип | По умолчанию |
|---|---|---|
quat | Quaternion | — |
quatКватернион, чтобы ничего не делать.
QuaternionОригинальный кватернион.
Поля и константы4
WПоле
public float W;W компонент кватерниона. Это "реальная" часть. Примечание: Quaternion Как правило, не следует напрямую манипулировать компонентами.
XПоле
public float X;X компонент кватерниона. Это значение вдоль "имагинария" i ось.
Примечание: Quaternion Как правило, не следует напрямую манипулировать компонентами.
YПоле
public float Y;Y компонент кватерниона. Это значение вдоль "имагинария" j ось.
Примечание: Quaternion Как правило, не следует напрямую манипулировать компонентами.
ZПоле
public float Z;Z компонент кватерниона. k ось.
Примечание: Quaternion Как правило, не следует напрямую манипулировать компонентами.