Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 33 743 700

  • Nb. de membres 193
  • Nb. d'articles 1 329
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  Création-Développement »» J'ai besoin d'aide

J'ai besoin d'aide

3 Modérateur(s)
K-LElwoodcorto
artblink artblinkicon_post
Non???!!!! NON.... bin si...

Mission 1 ok... j'ai REUSSI non de diou, j'ai réussi à trier l'affichage par la méthode des Z...

Pb: j'ai tellement bidouiller le code, que non seulement je me rappel plus comment j'ai fais, mais mon code est hyper bordélique et je m'y perd... lol

Bon je vais couché car j'ai réfléchi a fond sur le truc (y'a des petites erreurs d'affichage mais la sa claque encore plus)

Artblink trop content.

Je commence sérieusement à comprendre les bases de la 3D... dès que je clarifie le bordel dans mon code, un ch'ti tuto, comme sa on pourra le transformet pour python... c'est pas cool sa. Bon sa sera moins rapide qu'en C, mais au moins, tous les hollywoodiens seront capable d'afficher des objets 3D.

Respect
artblink artblinkicon_post
Brun, sa marche presque... snif

La, j'ai réussi à trier les coordonnés des points en fonction de l'axe Z, mais nouveau problème... les lignes... bin oui, maintenant que j'ai trié les coordonnées, je dois remettre dans le bon sens les liaisons entre ses points... je szuis trop nul c'est désolant.

SSSAAA M'EENNEERRVVEE LOL

en plus je le vois que sa marche, les face cachés sont maintenant réellement caché... j'y suis presque. j'y retourne.

Artblink en mode bidouille

Sa marche pas, tant que j'arriverai pas a récupéré ma coordonnées Z pour la partie traçage, se sera mort... Mais grâce à toi, j'ai pigé le fonctionnement des tables multi dimensionnel et des meta table.. cool

Je reprend tous depuis le début en travaillant exclusivement sur les tableaux multi dimensionnel (car maintenant je sait les trié ;-) )
Je vous tiens au courant, comme d'hab
Message édité par : artblink / 21-12-2010 18:09
artblink artblinkicon_post
Bien vu

Le break me permettra d'utiliser le même moteur pour plusieurs objet :=!
alex alexicon_post
J'ai pas bien compris pourquoi tu fais tout ça, mais si tu préfères le faire comme ça...

Sinon utilises plutôt l'instruction Break pour sortir de ta boucle, comme ça ça marchera aussi quand ton tableau fera plus de 96 lignes ;-)
--
AmigaOne A1222
AmigaOne X1000 - RadeonHD - 2 Gio RAM
AmigaOne XE G4@933 - Radeon 9200 SE - 512 Mio RAM
artblink artblinkicon_post
Coucou Alex,

Voila se que j'ai fais sur papier en m'inspirant de ton code de la technique de sir thellier


Je part de :
For I=0 to 95 ; Boucle principal
PT[I]={PZM=ZM[I],PX=X[I],PY=Y[I],PD=D[I]} ; tableau multi-dimensionnel 96 lignes 4 colonnes
next
Sort(ZM) ; trie le tableau unique ZM de 95 lignes 1 colonne
; rigole pas pour la suite, c'est pas de l'optimisation, te moque pas un?
For I=0 to 95
For T=0 to 95
IF ZM[I]=PT[T].PZM then PT2[I]={PZM2=PT[T].PZM,PX2=PT[T].PX,PY2=PT[T].PY,PD2=PT[T].PD} And T=94
Next
Next

Bon j'explique se que je fais car c'est pas forcément compréhensible.

J'ai créé plusieurs tableau simple(à optimiser) que je copie dans un tableau multi dimensionnel qui contient les coordonnées des points.

une fois le tableau multi dimensionnel créé, je trie par ordre croissant le tableau des coordonnées en Z

Ensuite, je compare ce tableau auparavant trié (Z) avec le tableau multidimensionnel par l'intermédiaire de 2 boucle.

La boucle I sert de pointeur pour la création du nouveau multidimensionnel et aussi de pointeur pour le tableau des Z

Ensuite, la boucle T et la boucle de concordance entre la valeur du tableau (Z) et la valeur du tableau multidimensionnel PZM, une fois que l'égalité est VRAI, alors je transfert l'ensemble de la ligne dans le nouveau tableau multidimensionnel... et pour faire le pro, j'indique que T=94, se qui me permet de réduire le temp de boucle.

BON.... je l'ai fais que sur papier... pas encore tester, je vois sa se soir ou tout a l'heure quand la belle mère sera parti lol




alex alexicon_post
Ah ??
Tiens en me relisant je me rends compte qu'il manque un EndIf dans la fonction partitionner juste avant le next.


Si tu peux me dire les messages d'erreur, peut-être que je pourrais t'aider à corriger les problèmes ??
Sinon y a pas d'autres pratiqueurs de Hollywood ici sur le forum ?
--
AmigaOne A1222
AmigaOne X1000 - RadeonHD - 2 Gio RAM
AmigaOne XE G4@933 - Radeon 9200 SE - 512 Mio RAM
artblink artblinkicon_post
lol... brut de but sa marchera pas ;-) mais tu m'a donné la technique.

J'ai quelques erreurs, mais c'est déjà pas mal.
alex alexicon_post
c'est censé être déjà en Hollywood ;-)
--
AmigaOne A1222
AmigaOne X1000 - RadeonHD - 2 Gio RAM
AmigaOne XE G4@933 - Radeon 9200 SE - 512 Mio RAM
artblink artblinkicon_post
Merci,

Dis donc, c'est cohérent sa!!! sa m'a l'air plus que pas mal... J'essai de le traduire pour hollywood et je fais un retour

Respect
alex alexicon_post
Bon alors voilà, je reprécise que je ne connais pas du tout Hollywood, j'ai fait deux trois recherches pour la syntaxe et je n'ai pas testé mon code (forcément puisque je n'ai pas Hollywood). Ce code ne fonctionne (enfin j'espère) que pour le tableau avec la structure PZM, X, Y et D.



Function tri_rapide(tableau, premier, dernier)
    If premier < dernier
        Local pivot = choix_pivot(tableau, premier, dernier)
        pivot = partitionner(tableau, premier, dernier, pivot)
        tri_rapide(tableau, premier, pivot-1)
        tri_rapide(tableau, pivot+1, dernier)
    EndIf
EndFunction

Function choix_pivot(tableau, premier, dernier)
    ; on choisit toujours le premier élément comme pivot
    return(premier)
EndFunction

Function partitionner(tableau, premier, dernier, pivot)
    echanger(tableau, pivot, dernier)
    Local j = premier
    For Local i = premier to dernier-1
        If tableau[i].PZM <= tableau[j].PZM
            echanger(tableau, i, j)
            Add(j,1)
    Next
    echanger(tableau, dernier, j)
    Return(j)
EndFunction

Function echanger(tableau, index1, index2)
    ; on mémorise les valeurs liées à index 1
    Local PZM = tableau[index1].PZM
    Local X = tableau[index1].X
    Local Y = tableau[index1].Y
    Local D = tableau[index1].D
    
    ; on recopie les valeurs liées à index2 dans index1
    tableau[index1].PZM = tableau[index2].PZM
    tableau[index1].X = tableau[index2].X
    tableau[index1].Y = tableau[index2].Y
    tableau[index1].D = tableau[index2].D
    
    ; on recopie les valeurs mémorisées dans index2
    tableau[index2].PZM = PZM
    tableau[index2].X = X
    tableau[index2].Y = Y
    tableau[index2].D = D
EndFunction



maintenant dans ton code il te suffit d'ajouter la ligne


tri_rapide(PT, 0, 95)


là où tu avais mis "Ici le tri"
--
AmigaOne A1222
AmigaOne X1000 - RadeonHD - 2 Gio RAM
AmigaOne XE G4@933 - Radeon 9200 SE - 512 Mio RAM
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme