Utilisation du WiewWindow comme caméra
Posté le 23/05/2018 17:53
Comme vu dans le titre, j'ai trouvé une astuce qui vous permet de vous déplacer littéralement "au dessus" de ce que vous affichez en mode graphique :
Il vous suffit en fait de remplacer le Xmin, Xmax, Ymin, Ymax par deux variables qui vous permettront par la suite de déplacer en fait le WiewWindow. Opération plus rapide que de déplacer tous vos points et qui en plus ne vous fait pas d'erreur quand vous sortez de l'écran.
Ex:
WiewWindow A, A+C, 0, B, B+D, 0, 1, Dim List 1, 1
Les 3 dernières valeurs ("1, Dim List 1, 1") sont ici car vous devez utiliser le super drawstat pour afficher ce que vous voulez.
Le A correspond au Xmin et le A+C au Xmax.
Le B correspond au Ymin et le B+D au Ymax.
Le C et le D correspondent aux valeurs que vous ajoutez au Xmin et Ymin pour obtenir les Xmax et Ymax.
Je ne vous expliquerais pas tout de suite comment mais en faisant varier ces valeurs vous pouvez zoomer ou dezoomer ainsi que vous déplacer au dessus de votre Graph en changeant le WiewWindow.
Si vous voulez des précisions n'hésitez pas
Citer : Posté le 23/05/2018 18:00 | #
Je n'ai pas bien compris à quoi sert la liste à l'emplacement du Tθ
Citer : Posté le 23/05/2018 23:22 | #
Dans tous les cas on est obligés de redessiner tous les points non ? Vu que si je me souviens bien, changer le viewwindow efface ce qu'il y a à l'écran.
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 23/05/2018 23:38 | #
Merci d'avoir rappelée cette méthode utile, déjà utilisée dans différents jeux, notamment ceux qui utilisent le Drawstat et consorts, parce qu'elle permet de déplacer des graphismes sans modifier les Lists (c'est ça qui prend le plus de temps).
Mais je crois que ZZ a raison, une modification du ViewWindow efface le contenu de l'écran normalement.
Tu peux probablement ajouter au post principal les explications pour le zoom et le dezoom. Ceci dit ça reste assez limité car l'on ne peut pas "épaissir" un trait zoomer à plus de 3 pixels...
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 24/05/2018 07:37 | #
Ouais c'est vrai que c'est limité mais c'est quand même plus rapide. La je peu pas mais plus tards je posterais plus de détails.
A+
-Planétarium 2
Citer : Posté le 25/05/2018 00:22 | #
Je n'ai pas bien compris à quoi sert la liste à l'emplacement du Tθ
Citer : Posté le 27/06/2018 10:40 | #
Désolé de la réponse tardive
Maintenant que tu le dit ça me revient
Ajouté le 27/06/2018 à 18:35 :
Je voudrait une petite précision :
Si l'on dessine une image (disons en SuperDraw-Stat) avec le paramétrage V-Window d'origine (-6,3 ; 6,3 ; 1 ; -3,1 ; 3,1 ; 1) Avec un pixel de coordonnées (7 ; 4)Si l'on bouge le réglage du V-windows comme y faut peut-on voir le pixel ?
J'aimerais également savoir comment zoomer et dé-zoommer...
Merci d'avance
Citer : Posté le 27/06/2018 21:08 | #
Le parametrage classique 0,127 0,63 c'est juste pour avoir une correspondance exacte entre pixel et point.
Si tu paramètres 0,63 0,31 alors tu fais un zoom x2
Citer : Posté le 28/06/2018 10:43 | #
Yep mais je voudrait régler cela dans un programme sans sortir de l'exécution et sur la commande de l'utilisateur... Autrement dit juste en modifiant les variable A, B, C, et D
Citer : Posté le 28/06/2018 12:50 | #
Shadow : à mes yeux, le plus évident serait sans doute d'avoir un sous-programme qui fait ça :
ViewWindow A, A+C, 0, B, B+D, 0, 1, Dim List 1, 1
//On modifie le ViewWindow en fonction des variables A B C D qui ont été modifiées en amont
Graph(X,Y)=(ReP List 1[T],ImP List 1[T
//On redessine tout puisque le viewwindow efface l'écran graphique
//La liste 1 contient des nombres complexes
Par ailleurs, ton dessin sera rapide si tu n'as pas à modifier les coordonnées dans la List1. Ce qui fait qu'il ne faudrait pas en effacer le contenu dans le programme. Pour des valeurs complexes, ça te prend 24 Octets par valeur. Pour deux listes séparées, ça te prend 12 octets pour chaque ordonnées et 12 octets pour chaque abscisse, ce qui revient à 24 octets. Mais moi, j'ai une astuce...
Les valeurs avant la virgule font office d'abscisse et les décimales d'ordonnées. Pour les récupérer, tu fais :
Int List 1 pour les abscisses
100Frac List 1 pour les ordonnées
Chaque valeur ne prend que 12 octets ! deux fois moins !
Mais... Sshhhhh ! C'est un secret
Citer : Posté le 28/06/2018 13:07 | #
Elle est géniale ton astuce je n'y avais jamais pensé !!
En fait j'ai besoin de ça pour un truc tout couillo* : Je vais afficher une carte des Etats Unis pour afficher la progression du joueur... Le joueur pourra zoomer et se déplacer sur la carte à sa guise grâce à une seule liste... Les different type de rails seront signalisé par les different types de trait : fin continu; gros continu, pointillés fin, et pointillés gros
Ce qui me faudrait savoir c'est quelles variables (entre A, B, C, et D) il faudrait que je modifie pour avoir un déplacement vers la droite, la gauche, le bas, le haut, zoom et. dé-zoom...
Je sent que ce projet va être pas mal... (je l'ai appelé Railgold)
Citer : Posté le 28/06/2018 13:44 | #
Oh, je vois. Très franchement, je l'aurais fait avec des pictures, mais bon.
Si tu incrémentes A, la caméra se déplace vers la droite. Si tu incrémentes B, elle se déplace vers ... le bas ou le haut, je sais pu'. Diminue la valeur de A pour aller vers la gauche et la valeur de B pour aller heu... bah soit en haut soit en bas. Les valeurs C et D sont là uniquement pour la largeur et la longueur de l'affichage, autrement tu peux t'en servir comme zoom.
Citer : Posté le 28/06/2018 13:47 | #
Les pictures ce n'est pas posible : elles n'utilisent pas les coordonnées de l'écran... Je pense qu'elles doivent avoir un système indépendant du v-Window...
Citer : Posté le 28/06/2018 18:02 | #
Pas si tu as plusieurs Pictures. Ça implique de penser un système différent, mais c'est faisable.
Citer : Posté le 28/06/2018 18:17 | #
Je verrais... Le pictures prennent de la place et ça m'embête de devoir en utiliser beaucoup...
Citer : Posté le 28/06/2018 18:35 | #
Les pictures y'a que le scroll vers le haut/bas qui est possible, droite/gauche ça l'est pas
(puis évitez de mettre 43124 pictures dans les programmes c'est chiant )
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 28/06/2018 18:41 | #
Je suis d'accord de toute façon je ne sa n'en suis pas encore là...
Citer : Posté le 28/06/2018 18:44 | #
Attention aux listes de nombres complexes, ça prend pas mal de temps à afficher si je ne m'abuse (+30 % si ma mémoire est bonne). Vaut mieux faire du complexe pour du stockage pur, ça permet d'utiliser moins de listes/matrices, mais pour de la gestion, soit ça apporte un intérêt particulier (rotation faciles, etc.) soit c'est gourmand pour pas grand chose
Citer : Posté le 28/06/2018 20:04 | #
@Zezombye : C'est chiant quand c'est inutile. Tu verras que j'en ferai une utilisation tout à fait juste !
Citer : Posté le 07/09/2018 17:38 | #
Re sur le topic. Excusez-moi pour le retard mais je n'ais pas vu tout ces posts sur ma messagerie... bref, j'ai appliqué ce que je vous ai decrit et je vous poste le resultat de suite avec mon ordinateur. Précisions avant utilisation:
Flèches pour ce déplacer sur la map et [shift] pour zoomer [alpha] dezoomer.
-Planétarium 2
Citer : Posté le 07/09/2018 17:43 | # | Fichier joint
Voici le programme g1m en lien.
-Planétarium 2