vec3
Interface représentant un vecteur 3D. Un vecteur 3D est représenté par des coordonnées (x, y, z) et peut représenter un point dans l'espace, un vecteur directionnel ou d'autres types de données à trois dimensions ordonnées. Les vecteurs 3D peuvent être multipliés par des matrices 4x4 (Mat4) en utilisant la mathématique des coordonnées homogènes, ce qui permet un calcul efficace de la géométrie 3D. Les objets Vec3 sont créés à l'aide de l'outil ecs.math.vec3 Vec3Factory, ou par des opérations sur d'autres objets Vec3.
Source
L'interface Vec3Source représente tout objet possédant des propriétés x, y et z et pouvant donc être utilisé comme source de données pour créer un Vec3. En outre, Vec3Source peut être utilisé comme argument pour les algorithmes Vec3, ce qui signifie que tout objet ayant des propriétés {x: number, y: number, z: number} peut être utilisé.
Propriétés
Vec3 possède les propriétés énumérables suivantes :
readonly x : number
Accéder à la composante x du vecteur.
readonly y : number
Accéder à la composante y du vecteur.
readonly z : number
Accéder à la composante z du vecteur.
Usine
de
Créer un Vec3 à partir d'un Vec3, ou d'un autre objet avec des propriétés x, y.
ecs.math.vec3.from({x, y}: {x: number, y: number, z: number}}) // -> vec3
un
Créer un vec3 dont tous les éléments sont fixés à un. Ceci est équivalent à vec3.from({x: 1, y: 1, z: 1})
.
ecs.math.vec3.one() // -> vec3
échelle
Créer un vec3 dont tous les éléments sont réglés sur la valeur d'échelle s. Ceci est équivalent à vec3.from({x: s, y: s, z: s})
.
ecs.math.vec3.scale(s : number) // -> vec3
xyz
Créer un Vec3 à partir des valeurs x, y, z. Ceci est équivalent à vec3.from({x, y, z})
.
ecs.math.vec3.xyz(x : number, y : number, z : number) // -> vec3
zéro
Créer un vec3 dont tous les éléments sont mis à zéro. Ceci est équivalent à vec3.from({x: 0, y: 0, z: 0})
.
ecs.math.vec3.zero() // -> vec3
Immuable
Les méthodes suivantes effectuent des calculs basés sur la valeur actuelle d'un Vec3, mais ne modifient pas son contenu. Les méthodes qui renvoient des types Vec3 renvoient de nouveaux objets. Les API immuables sont généralement plus sûres, plus lisibles et moins sujettes aux erreurs que les API mutables, mais elles peuvent être inefficaces dans les situations où des milliers d'objets sont alloués à chaque image.
Si le ramassage des ordures a un impact sur les performances, envisagez d'utiliser l'API mutable décrite ci-dessous.
clone
Créer un nouveau vecteur avec les mêmes composantes que ce vecteur.
existingVec3.clone() // -> vec3
croiser
Calculer le produit en croix de ce vecteur et d'un autre vecteur.
existingVec3.cross(v : Vec3Source) // -> vec3
données
Accéder au vecteur comme un tableau homogène (4 dimensions).
existingVec3.data() // -> nombre[]
distanceTo
Calculer la distance euclidienne entre ce vecteur et un autre vecteur.
existingVec3.distanceTo(v : Vec3Source) // -> vec3
diviser
Division vectorielle par éléments.
existingVec3.divide(v : Vec3Source) // -> vec3
point
Calculer le produit point de ce vecteur et d'un autre vecteur.
existingVec3.dot(v : Vec3Source) // -> vec3
égaux
Vérifie si deux vecteurs sont égaux, avec une tolérance en virgule flottante spécifiée.
existingVec3.equals(v : Vec3Source, tolerance : number) // -> booléen
longueur
Longueur du vecteur.
existingVec3.length() // -> nombre
moins
Soustraire un vecteur de ce vecteur.
existingVec3.minus(v : Vec3Source) // -> vec3
mélange
Calculer une interpolation linéaire entre ce vecteur et un autre vecteur v avec un facteur t de telle sorte que le résultat soit thisVec * (1 - t) + v * t. Le facteur t doit être compris entre 0 et 1.
existingVec3.mix(v : Vec3Source, t : number) // -> vec3
normaliser
Renvoie un nouveau vecteur ayant la même direction que ce vecteur, mais avec une longueur de 1.
existingVec3.normalize() // -> vec3
plus
Additionner deux vecteurs.
existingVec3.plus(v : Vec3Source) // -> vec3
échelle
Multiplier le vecteur par un scalaire.
existingVec3.scale(s : number) // -> vec3
fois
Multiplication vectorielle par éléments.
existingVec3.times(v : Vec3Source) // -> vec3
Mutable
Les méthodes suivantes effectuent des calculs basés sur la valeur actuelle d'un Vec3 et modifient son contenu sur place. Elles sont parallèles aux méthodes de l'API mutable ci-dessus. Les méthodes qui renvoient des types Vec3 renvoient une référence à l'objet actuel pour faciliter l'enchaînement des méthodes. Les API mutables peuvent être plus performantes que les API immuables, mais elles sont généralement moins sûres, moins lisibles et plus sujettes aux erreurs.
SetCross
Calculer le produit en croix de ce vecteur et d'un autre vecteur. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setCross(v : Vec3Source) // -> vec3
setDivide
Division vectorielle par éléments. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setDivide(v : Vec3Source) // -> vec3
setMinus
Soustraire un vecteur de ce vecteur. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setMinus(v : Vec3Source) // -> vec3
setMix
Calculer une interpolation linéaire entre ce vecteur et un autre vecteur v avec un facteur t de telle sorte que le résultat soit thisVec * (1 - t) + v * t. Le facteur t doit être compris entre 0 et 1. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setMinus(v : Vec3Source, t : number) // -> vec3
setNormalize
Définit le vecteur comme une version de lui-même avec la même direction, mais avec une longueur de 1. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setNormalize() // -> vec3
setPlus
Additionner deux vecteurs. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setPlus(v : Vec3Source) // -> vec3
setScale
Multiplier le vecteur par un scalaire. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setPlus(s : number) // -> vec3
setTimes
Multiplication vectorielle par éléments. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setTimes(v : Vec3Source) // -> vec3
setX
Définit la composante x du Vec3. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setX(v : number) // -> vec3
setY
Définir la composante y du Vec3. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setY(v : number) // -> vec3
setZ
Définir la composante z du Vec3. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setZ(v : number) // -> vec3
Set (jeu de mots)
Les méthodes suivantes fixent la valeur de l'objet Vec3 actuel sans tenir compte de son contenu actuel, en remplaçant ce qui existait auparavant.
makeOne
Réglez le Vec3 pour qu'il ne contienne que des uns. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.makeOne() // -> vec3
makeScale
Réglez le Vec3 pour que tous les composants soient réglés sur la valeur d'échelle s. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.makeScale(s : number) // -> vec3
makeZero
Réglez le Vec3 sur des zéros. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.makeZero() // -> vec3
setFrom
Définir ce Vec3 pour qu'il ait la même valeur qu'un autre Vec3 ou qu'un autre objet avec des propriétés x, y et z. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setFrom(source : Vec3Source) // -> vec3
setXyz
Définir les composantes x, y et z du Vec3. Stocke le résultat dans ce Vec3 et renvoie ce Vec3 pour le chaînage.
existingVec3.setFrom(x : number, y : number, z : number) // -> vec3