Posté le 13/02/2017 19:18
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 117 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 06/05/2017 09:51 | #
Mais non, laisse ces pauvres 1 et 0, la matrice les contient vraiment !
Tes coordonnées c'est les (x, y, z) (pour chaque point) ; le programme les transforme en (x', y', z') puis en (x", z"). Mais les 0 et les 1 font partie de la transformation, si tu les changes tu obtiendras n'importe quoi.
Citer : Posté le 06/05/2017 12:12 | #
ok d accord!, je n'avais pas sasit le sens de leur utilité.
Au fait, je vais mettre le deuxieme version de mon jeu D-DAY Evolution avec toutes tes modifs, seule derniere restante: je n'ai pas réussit a faire le saut de programme plus propre avec le programme du jeu... mais j'ai quand même réussit les autres modifs.
Ajouté le 29/05/2017 à 18:05 :
Re Bonjour tout le monde sur ce topic,
Récemment j'ai bien avancé sur se sujet, j'ai réussit l'affichage, avancer et reculer, je me suis penché sur les rotations, j'ai bien suivit tes conseils et explications Lephenixnoir et j'ai plutôt bien avancé, un seul truc me bloque : afficher les pts du monde...je sais qu'il faut que je les trace moi même. J'ai utilisé la matrice P de 4×4 pour placer mes pts et la matrice Q pour placer mes pts transformés puis je les transformes en pts 2d pour les afficher à l'ecran, seul problème, à la fin des calculs, je ne vois pas comment je peut faire pour afficher les pts autrement que de traiter les pts de résultats de ma mat Q un par un...
Je n'ais pas d'ordinateur la maintenant donc je ne peut pas mettre avec le programme. Je le fait le plus vite possible.
En attendant, j'espère avoir été assez clair pour toi, n'hésite pas si tu as des doutes sur ce que tu comprends.
En attendant une réponse rapide de ta part,
DISPERSEUR
-Planétarium 2
Citer : Posté le 29/05/2017 19:56 | #
Normalement, le principe est qu'une fois crée la matrice Q pour effectuer les transformations, tu considères un par un tous les points de ton monde, tu leur appliques la matrice Q (en faisant un produit matriciel), tu les projettes en 2D, et ensuite tu utilises les fonctions de dessin.
Tu es obligé de tous les prendre un par un ! Tu ne peux pas multiplier directement ta matrice Q par la grosse matrice qui stocke tous les points du monde parce que ça n'a pas de sens mathématique. Et si tu trouvais un moyen de le faire... alors quelque part dans la calculatrice, il les prendrait tous un par un.
C'est pour ça qu'en Basic ça va être lent assez vite... malheureusement on ne peut pas faire mieux à ma connaissance.
Citer : Posté le 29/05/2017 20:11 | #
OK dommage que ce ne soit pas plus rapide, merci pour les precisions, je finis le code (pas ce soir ) et je le met en lien avec un autre message (je ne fait pas une page pour ce prog, je ne pense pas que ça vaille le coup ).
A plus
-Planétarium 2
Citer : Posté le 31/05/2017 13:49 | # | Fichier joint
Bonjour Lephenixnoir,
Je te met en lien mes programmes 3D.
-Le 1er en est un avec lequel tu peut afficher une figure 3D (actuellement 3: carré; rectangle; et triangle) pour cela, il te faut lancer le programme qui correspond a la figure (ex: pour le triangle: prog ".+TRIANG"), le programme te donne a la fin du chargement, un nombre, retient-le! Ensuite, tu lance le programme:".XDESSIN2", tu saisit le nombre que tu as retenu, tu saisit la vitesse de déplacements (0,1 est conseillé) et la figure se traçe.
-Le 2eme est un programme avec lequel tu peut faire une rotation. J'ai essayé de le faire en suivant tes anciens conseils sur les rotations. Un seul petit problème d'affichage. Pour ça, je te laisse voir par toi même.
-Planétarium 2
Citer : Posté le 01/06/2017 18:34 | #
Le premier programme donne des résultats assez curieux. Plus je me rapproche de mon carré et plus il s'allonge : la méthode que tu as choisie pour la perspective ne semble pas tout à fait respecter les proportions.
Le deuxième test est plus intéressant. Il marche bien, excepté la projection : il te faut afficher le point aux coordonnées (x / z, y / z) et non (x / y, z / y). C'est peut-être une erreur de ma part, je referai mes calculs. En modifiant cela (et le pas de θ, 0.4 au lieu de 0.1 sinon c'est trop lent), je vois bel et bien un carré tourner autour d'un de ses coins.
Citer : Posté le 02/06/2017 11:22 | #
Pour le premier programme, je pense que tu as tout simplement lancé le programme générateur du rectangle (qui, et là je suis d'accord, n'est pas tout a fait au point) au lieu de lancer le programme générateur du carré. Essaye le triangle...tu verra c'est le mieux réussit !
Pour le deuxième programme, effectivement, je pense aussi que ça marchera mieux en faisant X et Y / Z.
J'avais éssayé mais ça ne marchais pas très bien: evidemment, les coordonnées n'étaient pas calibrées a l'affichage
Je modifie le pas et tout ça et je te renvoie tout.
A+
-Planétarium 2
Citer : Posté le 02/06/2017 12:34 | #
J'ai testé les deux ! Je suis certain que les proportions du carré sont déformées si on s'approche de trop près, et le rectangle est du même acabit. Seulement pour le rectangle, comme on ne connaît pas sa longueur initiale, on finit juste par croire qu'il est plus long que ce qu'on avait imaginé au début...
Citer : Posté le 02/06/2017 17:31 | #
Et le triangle ?
-Planétarium 2
Citer : Posté le 02/06/2017 19:26 | #
Comme on pourrait s'y attendre vu les deux autres. Il est pas mal, mais c'est le même moteur : du coup on a le même problème.
Citer : Posté le 02/06/2017 19:55 | #
Bon OK, je vois ça...
Ajouté le 04/06/2017 à 21:02 :
Heu.. sur un autre sujet, j'ai une petite question sur un affichage: ya un moyen de mettre en Background un cercle qui grossit...?
Parce que je veut afficher un objet qui est enregistré en picture et je veut que mon cercle qui grossit, quand il arrive au niveau de l'objet en picture, il soit derrière....?
-Planétarium 2
Citer : Posté le 04/06/2017 21:47 | #
Le background ne peut pas changer tout seul. C'est une Picture, une seule, et si tu veux changer le background il faut redessiner une nouvelle forme (background désactivé) et ré-enregistrer la Picture concernée.
Additionnellement, le background est toujours en fond, quoi que tu fasses. Enfin il est dessiné en OR, autrement dit il n'y a pas de notion de « face » (si t'as un objet 3D, il est pas plein, il est en fil de fer : on voit le background à travers).
Citer : Posté le 04/06/2017 22:55 | #
OK je vais voir ça. Merci
-Planétarium 2
Citer : Posté le 03/12/2017 15:32 | # | Fichier joint
Comme je l'ai récemment mentionné dans mon autre topic : "une questions comme ça", je me suis repenché (comme je le fait souvent ) sur la 3D.
J'ai retrouvé mon ancien programme que j'avais développé. C'étai ce que j'avais fait de mieu en metière de 3D Basic Casio.. Je sais que le Basic Casio n'est pas dutout adapté pour ce genre de programme mais il y a quelques fonctions graphiques qui aident aussi (commme pa rexemple : GraphX-Y-(..) ). J'ai donc testé le programme et je me suis souvenu et je l'ai aussi constaté : il y a un espèce de gros "bug" je ne sais pas si on peut le dire comme ça.. mais voila :
au début du programme (que je vais mette en lien sur ce message), on voit une plateforme de dessus, si on s'en approch trop il y a tout un ziguigui de traits et si je continue encore, elle se retourne, je veut dire que au lieu d'être en bas elle est en haut et inversée... voici la commande que j'ai utilisée :
Graph(X,Y)=( List 1[T] / List 3[T], List 2[T] / List 3[T] )
Les deux "/" sont pour la conversion directe de 3D en 2D sur l'écran.
Je ne vois pas l'origine directe du problème je sais juste que ça vient de cette fonction.
Si vois voyez le truc dites moi svp, car là je galère.
-Planétarium 2
Citer : Posté le 03/12/2017 16:45 | #
Si tu t'en approche trop y'a fort à parier que tu passe derrière ton écran. Fais toi un schéma, tu t'en rendra vite compte
Au passage, dès que tu touches à de la 3D, papier crayon sont indispensables pour visualiser ce que tu fais.
Citer : Posté le 03/12/2017 16:47 | #
Oui effectivement, mais comment je peut faire pour pouvoir m'avancer sur ma map, je ne peut pas faire de conditions ni changer les coordonnées des pts, il y a bien un truc non ?
Et pour le crayon et le papier, j'en ai tjs un proche de moi (au cas ou)..
-Planétarium 2
Citer : Posté le 03/12/2017 17:17 | #
Ben si, faut mettre des conditions… Normalement sur les listes ça passe (genre List 1 * (List 1 > 10) → List 2 devrait mettre à 0 les éléments inférieurs à 10)
Ajouté le 03/12/2017 à 17:17 :
Ah oui, je te laisse gérer les cas à éviter, une fois que t'as compris d'où viennent les glitchs, c'est easy
Citer : Posté le 04/12/2017 07:23 | #
Ajouté le 04/12/2017 à 07:24 :
Ouais ça peut aller jusqu'a une certaine limite mais après si je veut par exemple afficher un couloir et me rendre au bout en partant du début (logique ) je peut pas.. Ça marcherait si je mettais les pts de mon couloir un peut avant ma position de départ ? Parce que le conditions ça fonctionne mais ça limite un peut beaucoup là, si tu vois ce que je veut dire..
En tous cas merci
-Planétarium 2
Citer : Posté le 04/12/2017 07:29 | #
L'idée c'est de retirer les points qui sont derrière l'écran. Si t'as un schéma bien fait, tu peux facilement en déduire une condition fonction de la position de la caméra et de son orientation. Ensuite il ne reste qu'à preprocess les calculs de l'affichage avec cette condition.
Citer : Posté le 04/12/2017 10:17 | #
Je pense que ça va être encore plus simple que ça car j'ai pas encore les rotations.
Je peut inclure la fonction d'affichage "Graph (X,Y)=()" dans une condition..? Savais pas..
Si les points qui dépassent l'ecran je les mets tous à 0, du coup si je recule ils ne seront plus la pour être afficher non ?
-Planétarium 2
Citer : Posté le 04/12/2017 10:20 | #
Alors juste. La liste de points dans l'espace, faut jamais y toucher x)
Tu l'exploite, mais jamais n'écris dessus. Donc tu créé une liste qui contient 0 si les points sont derrière l'écran, et si tu bouge tu la recréé en fonction