Bibliothèque sur les matrices
Par -Alexandre LEGOUT aka LAlex- le mardi, octobre 14 2003, 15:44 - AS2 - Lien permanent
Ca code beaucoup en ce moment, mais pas pour moi ...
Entre deux batailles avec mes composants, j'ai commencé à créer une bibliothèque sur les matrices, accompagnée d'une refonte de ma classe Array2 (tableau à deux dimensions), qui se nomme maintenant Grid.
La classe Matrix est une classe qui hérite de Grid, mais les paramètres du constructeur et des accesseurs sont différents, car on utilise en géneral les matrices sous la forme (ligne, colonne), alors que les tableaux à deux dimensions sont en général utilisés comme un système de coordonnées, soit (x,y), avec x comme colonne et y comme ligne ... :roll: J'ai aussi implémenté le cas particulier de la matrice carrée dans la classe SquareMatrix
La classe Matrix contient les méthodes permettant de multiplier ou d'aditionner entre elles des matrices. Je compte étoffer ensuite cette bibliothèque avec une classe Vector, qui pourrait contenir un nombre n de dimensions (avec pourquoi pas un cas particulier pour les vecteurs à 2 ou 3 dimensions), car un vecteur aprés tout n'est qu'une matrice avec une seule colonne. ![]()
Cela me permettra ensuite d'utiliser cette classe avec mon moteur 3D, et d'utiliser une matrice de transformation qui contient translation, homotétie et rotation en même temps ... On vera bien si ca le ralentit ou pas ... ![]()
Commentaires
Normalement, on retombe sur les mêmes calculs, non ?
Ben le fait de passer par plusieurs couches dans la chaine de prototypes peut ralentir l'appel des méthodes ...

Mais le fait de ne faire qu'une multiplication de matrices pourrait l'accélérer ...
A voir ! :roll:
Ce qui est cool ... c'est qu'avant tout le monde tu nous a "révolutionné" la matrice.... (:D)
Ps : je sors ?
OUI ! :roll:
je viens de regarder de plus prêt tes classes elles sont bien foutues


un truc que je vois dans ton code c'est que tu tapes :
// classe Matrix// Remplir une matrice avec une suite de valeurs
// Vérifie que les arguments sont tous des nombres
function fill($c:Number) {
for (var i=0 ; i<argument.length ; i++) {
if (arguments[i] != Number(arguments[i])) {
return;
}
}
super.fill.apply(this,arguments);
}
j'utilise rarement apply et arguments comme tu le fais là... tu peux un peu préciser le pourquoi du comment ici ? Si cela ne te dérange pas ?
Merci
Yop eka !
Le super.fill.apply(this,arguments) revient tout simplement à executer la méthode fill de la classe Grid ... Il s'agit ici d'une méthode qui prend un nombre indéfini d'arguments. Pour les transmettre à cette méthode, il faut donc utiliser apply avec arguments !
Mais je sort bientôt une nouvelle version de ces classes. Pas grand chose de neuf, mais un code un peu plus propre : tu ferais mieux d'attendre un peu ...
no problemo
c'était juste que comme je te l'ai écrit au dessus, j'ai jamais utilisé ou eu a utiliser ce type de code dans mes fonctions et autres
et c'est vrai que j'avais pas vu la méthode polymorphe de la classe Grid !
Cela vaut le coup parfois de se pencher sur des vieux messages sur ton blog tiens 

Merci en tout cas et j'attend avec impatience des nouvelles mises à jour.. en même temps cela m'a donné une idée ta classe Grid
bye
Fil des commentaires de ce billet