Salut
j'ai un objet3D représenté à l'aide de nuage de points et j'ai voulu savoir comment faire pour agrandir cet objet ou le rendre plus petit.
merci d'avance
Version imprimable
Salut
j'ai un objet3D représenté à l'aide de nuage de points et j'ai voulu savoir comment faire pour agrandir cet objet ou le rendre plus petit.
merci d'avance
Bonjour,
tu n'as qu'à appliquer les transformations classiques, le fait que ce soit un nuage de points ne change pas le problème...
Fais une recherche sur les mots clefs "zoom", "agrandissement", "scale" dans ce forum.
L'application d'une simple matrice de transformation de ce type fera l'affaire :
Pour une transformation uniforme on a x=y=z. L'avantage d'avoir un nuage de point, c'est de pouvoir paralleliser le tout (SSE par ex).Code:
1
2
3
4
5 x 0 0 0 0 y 0 0 0 0 z 0 0 0 0 1
Salut
merci PRomu@ld,mais franchement j'ai rien compris.
est-ce que vous pouvez m'expliquer en détails?si ça ne vous dérange pas bien sur.
Si tu n'as même pas un tout petit peu de notions de matrices de transformation je ne vois pas quel espoir tu peux avoir à travailler avec un nuage de points 3D.
http://jeux.developpez.com/faq/matqu...ithmetique#Q11
Euh, je pensais pas être si abstrait que ça :aie:
En fait pour agrandir ou rétrécir un objet, il faut le transformer (pour les déplacer et leur appliquer des rotations aussi).
Afin de les transformer, on leur applique une matrice de transformation. Pour la matrice de mise à l'échelle (ce que tu veux), il s'agit de la matrice que je t'ai donné. Les paramètres x,y et z définissent l'agrandissement sur l'axe x l'axe y et l'axe z. Sachant qu'une valeur de 1 conservera la taille initiale.
Maintenant, je pense que ta question est plutôt comment appliquer la matrice de transformation. Et bien, c'est très simple, c'est de l'algèbre linéaire.
Tu prends un point en 3D sous sa forme homogène :
Le nouveau point est donné par :Code:
1
2 P = ( i , j , k , 1 )
Où P' est le nouveau point, M la matrice de transformation et * la multiplication matricielle classique de l'algèbre linéaire.Code:P' = M * P
Comme ici la matrice de transformation est diagonale le résultat est tout simple :
P' = ( x * i , y * j , z * k , 1 )
Il y a plein d'information ici :
http://jeux.developpez.com/faq/matquat/
bonsoir
merci pour les explications,j'ai dés que j'ai vu votre reponse j'ai fait une petite recherche et j'ai compris comment utiliser les matrices de mise à l'echelle et de rotation.
mais dans le cas sur lequelle je travaille je sais pas comment fixer le vecteur de mise à l'echelle(x,y,z)
je vous expliquerai plus: j'ai deux objets de meme type répresentés achacun par un nuage de points l'un est un peu plus grand que l'autre et tout les deux se trouvent dans une boite qui l'englobe.
ce que je dois faire ,c'est agrandir le petit pour qu'il puisse etre englobé par la boite de l'autre et vice versa
boite1 : DX DY DZ de cote
boite2 : DX1 DY1 DZ1
facteur zoom pour passer de boite1 a boite2 :
- si zoom anisotropique :
- DX1/DX en x
- DY1/DY en y
- DZ1/DZ en z
- si zoom homogene
- facteur = min ( DX1/DX, DY1/DY, DZ1/DZ)
:oops::oops::oops::oops:
oh j'ai vraiment honte
c'est vraiment très facile,je sais pas comment j'ai pas penser à ceci
la fatigue et le stress ne me permettent plus de resoudre meme les problèmes simples
merci bien