[Graphismes] Dessinez avec une base de données Hitskin_logo Hitskin.com

Ceci est une prévisualisation d'un thème de Hitskin.com
Installer le thèmeRetourner sur la fiche du thème

Tout 82
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Tout 82

Ven 26 Avr 2024 - Bienvenue,

Rechercher
 
 

Résultats par :
 


Rechercher Recherche avancée

Connexion

Récupérer mon mot de passe



Chatbox externe


Derniers sujets
» [JEU] Mon voisin du dessous
[Graphismes] Dessinez avec une base de données EmptyDim 16 Oct 2022 - 21:11 par Wistaro

» Bonne année 2018!
[Graphismes] Dessinez avec une base de données EmptyVen 2 Nov 2018 - 19:42 par Ti64CLi++

» Lancement du TI-Concours 2017 !
[Graphismes] Dessinez avec une base de données EmptySam 20 Mai 2017 - 0:27 par Paulo1026

» Chaînes Youtube des membres
[Graphismes] Dessinez avec une base de données EmptyVen 19 Mai 2017 - 22:41 par Wistaro

» cacul du taux d'intêret
[Graphismes] Dessinez avec une base de données EmptyVen 24 Mar 2017 - 21:50 par m@thieu41

» [Projet] Un mario by tout82
[Graphismes] Dessinez avec une base de données EmptyDim 29 Jan 2017 - 14:09 par Wistaro

» Cherche documentation assembleur TI82stat
[Graphismes] Dessinez avec une base de données EmptyMer 25 Jan 2017 - 12:29 par Ti64CLi++

» Probleme Ti-82 Stats fr
[Graphismes] Dessinez avec une base de données EmptyJeu 12 Jan 2017 - 13:56 par Ti64CLi++

» ROM 82 stats.fr
[Graphismes] Dessinez avec une base de données EmptyJeu 15 Déc 2016 - 10:24 par Ti64CLi++

Partenaires
TI-Planet Espace-TI : Forum

Faire un don à Tout-82...
Où va cet argent ?
Membres donateurs:- Persalteas (10€)
- Wistaro (5€)
- jo2geek (22€)

Les posteurs les plus actifs du mois
Aucun utilisateur

-40%
Le deal à ne pas rater :
Tefal Ingenio Emotion – Batterie de cuisine 10 pièces (induction, ...
59.99 € 99.99 €
Voir le deal

Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

[Graphismes] Dessinez avec une base de données

5 participants

Aller en bas  Message [Page 1 sur 1]

persalteas

persalteas
----------------------
----------------------

Cas général

Prenons, au hasard, le code d'une animation Mario en développement:

Code:
Ligne(17,40,28,40
Ligne(15,39,16,39
Ligne(29,39,30,39
Ligne(13,38,14,38
Ligne(31,38,33,36
Ligne(8,33,12,37
Ligne(34,35,34,34
Ligne(35,33,35,30
Ligne(7,32,7,31
Ligne(6,30,6,29
Ligne(36,29,38,27
Ligne(5,28,5,26
Ligne(27,26,38,26
Ligne(28,25,31,25
Ligne(30,24,31,24
Ligne(4,25,4,24
Ligne(3,23,3,20
Ligne(31,23,31,20
Pt-On(2,19
Ligne(32,19,32,18
Ligne(1,18,1,14
Ligne(2,13,3,12
Ligne(33,17,33,13
Ligne(4,11,7,11
Ligne(7,10,8,9
Ligne(8,8,11,5
Ligne(34,15,34,8
Ligne(33,7,32,6
Ligne(33,8,31,6
Ligne(12,5,13,4
Ligne(14,4,15,3
Ligne(16,3,17,2
Ligne(18,2,24,2
Ligne(31,6,28,6
Ligne(29,5,27,5
Ligne(27,4,25,4
Ligne(25,3,21,3
Ligne(19,4,21,4
Ligne(17,6,18,5
Ligne(17,10,17,7
Ligne(27,7,29,7
Ligne(18,10,19,9
Ligne(18,11,21,8
Ligne(21,9,22,8
Ligne(23,8,28,8
Ligne(28,9,30,11
Ligne(28,10,30,12
Ligne(31,11,32,12
Ligne(30,13,30,15
Ligne(29,16,27,18
Ligne(27,19,25,21
Ligne(27,18,24,18
Ligne(25,19,25,21
Ligne(26,22,28,23
Ligne(19,18,19,19
Pt-On(18,17
Ligne(17,17,17,20
Ligne(18,20,17,21
Ligne(17,21,19,23
Pt-On(20,23
Ligne(9,11,11,11
Ligne(8,12,9,12
Ligne(11,12,12,12
Ligne(8,13,8,16
Ligne(12,13,13,13
Ligne(13,14,13,16
Ligne(12,16,12,17
Ligne(11,17,11,19
Ligne(7,17,7,19
Ligne(6,19,10,19
Ligne(4,20,5,20
Ligne(5,14,5,16
Ligne(4,16,4,17
Pt-On(3,17
Ligne(8,20,10,20
Ligne(9,21,10,21
Ligne(11,22,12,22
Ligne(13,23,15,23
Ligne(15,22,17,22
Ligne(16,24,17,24
Ligne(18,25,20,25
Ligne(21,25,26,26
Pt-On(21,24
Ligne(12,26,15,29
Ligne(16,29,17,30
Ligne(18,30,19,31
Ligne(20,31,21,31
Ligne(22,32,32,32
Ligne(33,31,34,31
Ligne(22,31,22,34
Ligne(23,35,23,36
Ligne(24,37,27,37
Ligne(28,36,30,34
Pt-On(30,33
Pt-On(26,36
Ligne(25,33,27,33
Pt-On(25,34
Pt-On(27,34
[Graphismes] Dessinez avec une base de données Visage10

C'est beau, hein ?
Certes, mais un peu lourd.

Il existe un moyen d'économiser un octet par ligne. (un peu moins)
La base de données.

Comment ça marche ? Voici le principe

  • Créer une base de données qui contient tous les coordonées de points nécessaires au dessin des lignes
  • Créer un algorithme qui va extraire de cette base de données les coordonées nécessaires au traçage d'une ligne, puis passer à la suivante


Alors, étape 1, créer la base de données.
Je vais donc rentrer tout ça dans une liste.

Quelques remarques tout de même:

  • Vous ne pouvez utiliser qu'un seul type d'insctruction à la fois (ici j'ai viré les Pt-On )
  • ATTENTION: plus votre liste est grande, plus ça va être lent. Ne pas hésiter à la couper en plusieurs petites listes et à recommencer plusieurs fois l'algorithme de traçage.
  • Au maximum, vous pouvez stocker 249 lignes dans une liste (250*4>999). Mais je vous le déconseille, c'est très lent et ça demande beaucoup de RAM libre.
  • Vous n'êtes pas obligés d'utiliser L1, L2, ou une liste perso. Ans, (ou Rép en français), c'est sympa aussi.



Dans cet exemple, je vais prendre une liste hyper-grosse pour que vous compreniez bien le principe. Mais je vous le déconseille IRL.

Code:
:{17,40,28,40,15,39,16,39,29,39,30,39,13,38,14,38,31,38,33,36,8,33,12,37,34,35,34,34,35,33,35,30,7,32,7,31,6,30,6,29,36,29,38,27,5,28,5,26,27,26,38,26,28,25,31,25,30,24,31,24,4,25,4,24,3,23,3,20,31,23,31,20,32,19,32,18,1,18,1,14,2,13,3,12,33,17,33,13,4,11,7,11,7,10,8,9,8,8,11,5,34,15,34,8,33,7,32,6,33,8,31,6,12,5,13,4,14,4,15,3,16,3,17,2,18,2,24,2,31,6,28,6,29,5,27,5,27,4,25,4,25,3,21,3,19,4,21,4,17,6,18,5,17,10,17,7,27,7,29,7,18,10,19,9,18,11,21,8,21,9,22,8,23,8,28,8,28,9,30,11,28,10,30,12,31,11,32,12,30,13,30,15,29,16,27,18,27,19,25,21,27,18,24,18,25,19,25,21,26,22,28,23,19,18,19,19,17,17,17,20,18,20,17,21,17,21,19,23,9,11,11,11,8,12,9,12,11,12,12,12,8,13,8,16,12,13,13,13,13,14,13,16,12,16,12,17,11,17,11,19,7,17,7,19,6,19,10,19,4,20,5,20,5,14,5,16,4,16,4,17,8,20,10,20,9,21,10,21,11,22,12,22,13,23,15,23,15,22,17,22,16,24,17,24,18,25,20,25,21,25,26,26,12,26,15,29,16,29,17,30,18,30,19,31,20,31,21,31,22,32,32,32,33,31,34,31,22,31,22,34,23,35,23,36,24,37,27,37,28,36,30,34,25,33,27,33
Techniquement, la dimension de cette liste est un multiple de 4.

Donc ensuite, je crée un algo qui chope les bonnes valeurs, et qui trace...
Code:

:{17,40,28,40,15,39,16,39,29,39,30,39,13,38,14,38,31,38,33,36,8,33,12,37,34,35,34,34,35,33,35,30,7,32,7,31,6,30,6,29,36,29,38,27,5,28,5,26,27,26,38,26,28,25,31,25,30,24,31,24,4,25,4,24,3,23,3,20,31,23,31,20,32,19,32,18,1,18,1,14,2,13,3,12,33,17,33,13,4,11,7,11,7,10,8,9,8,8,11,5,34,15,34,8,33,7,32,6,33,8,31,6,12,5,13,4,14,4,15,3,16,3,17,2,18,2,24,2,31,6,28,6,29,5,27,5,27,4,25,4,25,3,21,3,19,4,21,4,17,6,18,5,17,10,17,7,27,7,29,7,18,10,19,9,18,11,21,8,21,9,22,8,23,8,28,8,28,9,30,11,28,10,30,12,31,11,32,12,30,13,30,15,29,16,27,18,27,19,25,21,27,18,24,18,25,19,25,21,26,22,28,23,19,18,19,19,17,17,17,20,18,20,17,21,17,21,19,23,9,11,11,11,8,12,9,12,11,12,12,12,8,13,8,16,12,13,13,13,13,14,13,16,12,16,12,17,11,17,11,19,7,17,7,19,6,19,10,19,4,20,5,20,5,14,5,16,4,16,4,17,8,20,10,20,9,21,10,21,11,22,12,22,13,23,15,23,15,22,17,22,16,24,17,24,18,25,20,25,21,25,26,26,12,26,15,29,16,29,17,30,18,30,19,31,20,31,21,31,22,32,32,32,33,31,34,31,22,31,22,34,23,35,23,36,24,37,27,37,28,36,30,34,25,33,27,33
:For(A,1,dim(Rép)-3,4
:Ligne(Rép(A),Rép(A+1),Rép(A+2),Rép(A+3
:End
Pif, paf, pouf. Terminé.

Il faut bien comprendre:

  • Rép (ou Ans) est une liste. Donc je peux très bien écrire Rép(A) comme j'écrirais L1(A). cheers 
  • Dans une boucle For allant de 1 à la dimension de la liste moins 3 (c'est à dire du début de la première ligne au début de la dernière ligne), je vais demander à la fonction Ligne de dessiner selon les coordonées A, A+1, A+2 et +3.


[Graphismes] Dessinez avec une base de données File

Des questions ? Vous êtes pas trop fatigués ? Sleep 
Il vous reste ensuite à rajouter les quelques Pt-On nécessaires à la complétion de votre dessin !


Optimisation plus poussée: si tous les points se relient

Dans le précédent exemple, on a finalement pas gagné grand chose en poids, et on a perdu en vitesse.
Quand tous les points se relient, il y a moyen d'exploser le gain de poids. Bien Joué 

Il suffit de décaler A de 2 et pas de 4, pour utiliser deux fois de suite les mêmes coordonnées ! Wink

[Graphismes] Dessinez avec une base de données Wabbit10

Considérons ce nouvel exemple.

Code:
:{10,10,30,30,21,45,10,30,30,10,30,30,10,30,10,10,30,10
:For(A,1,dim(Rép)-3,2
:Ligne(Rép(A),Rép(A+1),Rép(A+2),Rép(A+3
:End
Le première fois, l'algorithme va utiliser 10,10,30,30.
Puis, A ne va se décaler que de 2:
La seconde fois, il utilisera 30,30,21,45.

Cette technique nous permet d'économiser non plus 1, mais une moyenne de 5 octets par ligne !!! Bien Joué

Et on utilise très souvent des dessins avec des points reliés, quand on y fait attention.
C'est surtout dans ce cas là que la base de données devient un avantage... study 

Allez, faites en bon usage !! Bien Joué



Dernière édition par persalteas le Sam 26 Oct 2013 - 11:20, édité 1 fois

https://tout82.forumactif.org

m@thieu41

m@thieu41
----------------------
----------------------

Super tuto encore une fois Bien Joué

Wistaro

Wistaro
Passioné
Passioné

Merci pour ce superbe tutoriel!

Mias il y une chose que je ne comprend pas:
Persalteas a écrit:Dans une boucle For allant de 1 à la dimension de la liste moins 3 (c'est à dire du début de la première ligne au début de la dernière ligne), je vais demander à la fonction Ligne de dessiner selon les coordonées A, A+1, A+2 et +3.
Tu peut m'expliquer pourquoi tu fait cela? je ne voit pas trop l’intérêt de prendre le début de la première ligne au début de la dernière ligne

https://www.youtube.com/user/Wistaro

persalteas

persalteas
----------------------
----------------------

Je vais répondre avec une image :P

Le temps de la créer... :P

https://tout82.forumactif.org

Wistaro

Wistaro
Passioné
Passioné

OK pas de soucis Smile

Heu...une image Question

https://www.youtube.com/user/Wistaro

persalteas

persalteas
----------------------
----------------------

[Graphismes] Dessinez avec une base de données File

https://tout82.forumactif.org

m@thieu41

m@thieu41
----------------------
----------------------

J'aime bien le principe d'expliquer avec une image Razz.

persalteas

persalteas
----------------------
----------------------

Ben tiens... Va résumer ça à l'écrit ! Very Happy

Bien plus simple, les schémas Razz

Je fais plein de SVT et de biotechno, moi, dans la vie. J'aime les schémas. =D 

https://tout82.forumactif.org

Wistaro

Wistaro
Passioné
Passioné

Merci pour le schéma explicatif!

https://www.youtube.com/user/Wistaro

pito2901

pito2901
Passioné
Passioné

Bravo, pour une fois que je comprends un tuto, j’essaierai donc à partir de demain soir, de faire le visage de mario avec...

http://www.clictune.com/id=179469

pito2901

pito2901
Passioné
Passioné

Pour les pt-On(, ça donne:

Code:

:{2,19,18,17,20,23,3,17,21,24,30,33,26,36,25,34,27,34}
:For(A,1,dim(Rép)-1,2
:Pt-On(Rép(A),Rép(A+1
:End
Non ?

http://www.clictune.com/id=179469

m@thieu41

m@thieu41
----------------------
----------------------

C'est ça tu as compris le système Wink .

Linkakro

Linkakro
----------------------
----------------------

Persalteas dévoile et explique en plus le "secret industriel" de son morpion à graphisme 3D. Faisons en bon usage. Razz

persalteas

persalteas
----------------------
----------------------

J'utilise ce système a peu près systématiquement dans mes programmes...

C'est même la principale différence entre Herssahe 4.0 et 4.2 pour ceux qui connaissent:

Herssahe 4.0 est tout en Ligne(), le 4.2 est tout en bases de données...

Donc l'un est lourd et fluide, l'autre est plus léger et plein de lags...

https://tout82.forumactif.org

pito2901

pito2901
Passioné
Passioné

Ah... La Ti... Ce n'est qu'une calculatrice tout de même...

http://www.clictune.com/id=179469

Contenu sponsorisé



Revenir en haut  Message [Page 1 sur 1]

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum