quat
Interface représentant un quaternion. Un quaternion est représenté par des coordonnées (x, y, z, w) et représente une rotation en 3D. Les quaternions peuvent être convertis en matrices de rotation 4x4 avec les interfaces de Mat4. Les objets Quaternion sont créés avec la QuatFactory d'ecs.math.quat, ou par des opérations sur d'autres objets Quat.
Source
L'interface QuatSource représente tout objet ayant des propriétés x, y, z et w et pouvant donc être utilisé comme source de données pour créer un Quat. En outre, QuatSource peut être utilisé comme argument pour les algorithmes Quat, ce qui signifie que tout objet ayant les propriétés {x : nombre, y : nombre, z : nombre, w : nombre} peut être utilisé.
Propriétés
Quat possède les propriétés énumérables suivantes :
readonly x : number
Accéder à la composante x du quaternion.
readonly y : number
Accéder à la composante y du quaternion.
readonly z : number
Accéder à la composante z du quaternion.
readonly w : number
Accéder à la composante w du quaternion.
Usine
axisAngle
Créer un Quat à partir d'une représentation axe-angle. La direction du vecteur aa donne l'axe de rotation, et la magnitude du vecteur donne l'angle, en radians. Par exemple, quat.axisAngle(vec3.up().scale(Math.PI / 2)) représente une rotation de 90 degrés autour de l'axe y, et est équivalent à quat.yDegrees(90). Si la cible est fournie, le résultat sera stocké dans la cible et la cible sera renvoyée. Dans le cas contraire, un nouveau Quat sera créé et renvoyé.
ecs.math.quat.axisAngle(aa : Vec3Source, target? : Quat) // -> quat
de
Créer un Quat à partir d'un objet avec des propriétés x, y, z, w.
ecs.math.quat.from({x, y, z, w} : {x : nombre, y : nombre, z : nombre, w : nombre) // -> quat
lookAt
Créer un Quat représentant la rotation nécessaire pour qu'un objet positionné à "eye" regarde un objet positionné à "target", avec le vecteur "up" donné.
ecs.math.quat.lookAt(eye : Vec3Source, target : Vec3Source, up : Vec3Source) // -> quat
PitchYawRollDegrees
Construire un quaternion à partir d'une représentation du tangage, du lacet et du roulis, également connus sous le nom d'angles d'Euler YXZ. La rotation est spécifiée en degrés.
ecs.math.quat.pitchYawRollDegrees(v : Vec3Source) // -> quat
PitchYawRollRadians
Construire un quaternion à partir d'une représentation du tangage, du lacet et du roulis, également connus sous le nom d'angles d'Euler YXZ. La rotation est spécifiée en radians.
ecs.math.quat.pitchYawRollRadians(v : Vec3Source) // -> quat
xDegrees
Créez un Quat qui représente une rotation autour de l'axe x. La rotation est spécifiée en degrés.
ecs.math.quat.xDegrees(degrees : number) // -> quat
xRadiens
Créez un Quat qui représente une rotation autour de l'axe x. La rotation est spécifiée en radians.
ecs.math.quat.xRadians(radians : number) // -> quat
xyzw
Créer un Quat à partir des valeurs x, y, z, w.
ecs.math.quat.xyzw(x : number, y : number, z : number, w : number) // -> quat
yDegrees
Créez un Quat qui représente une rotation autour de l'axe y. La rotation est spécifiée en degrés.
ecs.math.quat.yDegrees(degrees : number) // -> quat
yRadiens
Créez un Quat qui représente une rotation autour de l'axe y. La rotation est spécifiée en radians.
ecs.math.quat.yRadians(radians : number) // -> quat
zDegrees
Créer un Quat qui représente une rotation autour de l'axe z. La rotation est spécifiée en degrés.
ecs.math.quat.zDegrees(degrees : number) // -> quat
zRadiens
Créer un Quat qui représente une rotation autour de l'axe z. La rotation est spécifiée en radians.
ecs.math.quat.zRadians(radians : number) // -> quat
zéro
Créer un Quat qui représente une rotation nulle.
ecs.math.quat.zero() // -> quat
Immuable
Les méthodes suivantes permettent d'effectuer des calculs en utilisant la valeur actuelle d'un Quat sans en modifier le contenu. Les méthodes qui renvoient des types Quat créent de nouvelles instances. Si les API immuables sont généralement plus sûres, plus lisibles et réduisent la probabilité d'erreurs, elles peuvent devenir inefficaces lorsqu'un grand nombre d'objets sont alloués par image.
Si le ramassage des ordures a un impact sur les performances, envisagez d'utiliser l'API mutable décrite ci-dessous.
axisAngle
Convertit le quaternion en une représentation axe-angle. La direction du vecteur donne l'axe de rotation, et la magnitude du vecteur donne l'angle, en radians. Si "cible" est fourni, le résultat sera stocké dans "cible" et "cible" sera renvoyé. Sinon, un nouveau Vec3 sera créé et renvoyé.
existingQuat.axisAngle(target? : Vec3) // -> vec3
clone
Créer un nouveau quaternion avec les mêmes composantes que ce quaternion.
existingQuat.clone() // -> quat
conjuguer
Retourne le conjugué de rotation de ce quaternion. Le conjugué d'un quaternion représente la même rotation dans le sens opposé autour de l'axe de rotation.
existingQuat.conjugate() // -> quat
données
Accéder au quaternion sous la forme d'un tableau de [x, y, z, w].
ecs.math.quat.data() // -> number[]
degrésTo
Angle entre deux quaternions, en degrés.
existingQuat.degreesTo(target : QuatSource) // -> nombre
delta
Calculer le quaternion nécessaire pour faire pivoter ce quaternion vers le quaternion cible.
existingQuat.delta(target : QuatSource) // -> quat
point
Calculez le produit en points de ce quaternion avec un autre quaternion.
existingQuat.dot(target : QuatSource) // -> quat
égaux
Vérifie si deux quaternions sont égaux, avec une tolérance en virgule flottante spécifiée.
existingQuat.equals(q : QuatSource, tolerance : number) // -> booléen
inv
Calculer le quaternion qui multiplie ce quaternion pour obtenir un quaternion de rotation nulle.
existingQuat.inv() // -> quat
nier
Négation de toutes les composantes de ce quaternion. Le résultat est un quaternion représentant la même rotation que ce quaternion.
existingQuat.negate() // -> quat
normaliser
Obtenir la version normalisée de ce quaternion avec une longueur de 1.
existingQuat.normalize() // -> quat
PitchYawRollRadians
Convertir le quaternion en angles de tangage, de lacet et de roulis en radians.
ecs.math.quat.pitchYawRollRadians(target? : Vec3) // -> vec3
PitchYawRollDegrees
Convertit le quaternion en angles de tangage, de lacet et de roulis en degrés.
ecs.math.quat.pitchYawRollDegrees(target? : Vec3) // -> vec3
plus
Additionner deux quaternions.
ecs.math.quat.plus(q : QuatSource) // -> quat
radiansTo
Angle entre deux quaternions, en radians.
ecs.math.quat.rotateToward(target : QuatSource, radians : number) // -> quat
escarpolette
Interpolation sphérique entre deux quaternions à partir d'une valeur d'interpolation fournie. Si l'interpolation est fixée à 0, elle renvoie ce quaternion. Si l'interpolation est fixée à 1, elle renvoie le quaternion cible.
ecs.math.quat.slerp(target : QuatSource, t : number) // -> quat
fois
Multiplier deux quaternions ensemble.
existingQuat.times(q : QuatSource) // -> quat
timesVec
Multiplier le quaternion par un vecteur. Cela revient à convertir le quaternion en une matrice de rotation et à multiplier la matrice par le vecteur.
ecs.math.quat.times(v : Vec3Source, target? : Vec3) // -> vec3
Mutable
Les méthodes suivantes effectuent des calculs en utilisant la valeur actuelle d'un Quat et la modifient directement. Ces méthodes correspondent à celles de l'API Immutable ci-dessus. Lorsqu'ils renvoient des types Quat, ils fournissent une référence au même objet, ce qui permet d'enchaîner les méthodes. Si les API mutables peuvent offrir de meilleures performances que les API immuables, elles ont tendance à être moins sûres, moins lisibles et plus sujettes aux erreurs. S'il est peu probable que le code soit appelé fréquemment au sein d'une même image, envisagez d'utiliser l'API Immutable pour plus de sécurité et de clarté.
setConjugate
Fixer ce quaternion à son conjugué de rotation. Le conjugué d'un quaternion représente la même rotation dans le sens opposé autour de l'axe de rotation. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setConjugate() // -> quat
setDelta
Calculer le quaternion nécessaire pour faire pivoter ce quaternion vers le quaternion cible. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setDelta(target : QuatSource) // -> quat
setInv
Indique le quaternion qui multiplie ce quaternion pour obtenir un quaternion de rotation nulle. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setInv() // -> quat
setNegate
Négation de toutes les composantes de ce quaternion. Le résultat est un quaternion représentant la même rotation que ce quaternion. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setNegate() // -> quat
setNormalize
Obtenir la version normalisée de ce quaternion avec une longueur de 1. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setNormalize() // -> quat
setPlus
Ajouter ce quaternion à un autre quaternion. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setPlus(q : QuatSource) // -> quat
setPremultiply
Ce quaternion est le résultat de q fois ce quaternion. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setPremultiply(q : QuatSource) // -> quat
setRotateToward
Faire pivoter ce quaternion vers le quaternion cible d'un nombre donné de radians, en le fixant à la cible. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setRotateToward(target : QuatSource, radians : number) // -> quat
setSlerp
Interpolation sphérique entre deux quaternions à partir d'une valeur d'interpolation fournie. Si l'interpolation est fixée à 0, elle renvoie ce quaternion. Si l'interpolation est fixée à 1, elle renvoie le quaternion cible. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setSlerp(target : QuatSource, t : number) // -> quat
setTimes
Multiplier deux quaternions ensemble. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setTimes(target : QuatSource) // -> quat
Set (jeu de mots)
Les méthodes suivantes fixent la valeur de l'objet Quat actuel sans tenir compte de son contenu actuel, en remplaçant ce qui existait auparavant.
makeAxisAngle
Définir un Quat à partir d'une représentation axe-angle. La direction du vecteur donne l'axe de rotation, et la magnitude du vecteur donne l'angle, en radians. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.makeAxisAngle(aa : Vec3Source) // -> quat
makePitchYawRollRadians
Fixe le quaternion à une rotation spécifiée par les angles de tangage, de lacet et de roulis en radians. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.makePitchYawRollRadians(v : Vec3Source) // -> quat
makeLookAt
Réglez le quaternion sur une rotation qui amènerait l'œil à regarder la cible avec le vecteur ascendant donné. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.makeLookAt(eye : Vec3Source, target : Vec3Source, up : Vec3Source) // -> quat
makePitchYawRollDegrees
Fixe le quaternion à une rotation spécifiée par les angles de tangage, de lacet et de roulis en degrés. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.makePitchYawRollDegrees(v : Vec3Source) // -> quat
makeXDegrees
Définit le quaternion comme une rotation autour de l'axe x (pitch) en degrés. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.makeXDegrees(degrees : number) // -> quat
makeXRadians
Définit le quaternion comme une rotation autour de l'axe x (pitch) en radians. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.makeXRadians(radians : number) // -> quat
makeYDegrees
Définit le quaternion comme une rotation autour de l'axe des y (lacet) en degrés. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.makeYDegrees(degrees : number) // -> quat
faire desYRadiens
Définit le quaternion comme une rotation autour de l'axe y (yaw) en radians. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.makeYRadians(radians : number) // -> quat
makeZDegrees
Définit le quaternion comme une rotation autour de l'axe z (roulis) en degrés. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.makeZDegrees(degrees : number) // -> quat
makeZRadians
Définit le quaternion comme une rotation autour de l'axe z (roulis) en radians. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.makeZRadians(radians : number) // -> quat
makeZero
Fixe le quaternion à une rotation nulle. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.makeZero() // -> quat
setFrom
Fixe ce quaternion à la valeur d'un autre quaternion. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setFrom(q : QuatSource) // -> quat
setXyzw
Fixe le quaternion aux valeurs x, y, z et w spécifiées. Stocke le résultat dans ce Quat et renvoie ce Quat pour le chaînage.
existingQuat.setXyzw(x : number, y : number, z : number, w : number) // -> quat