Raytracing 3D Casio FX92+ !
Posté le 14/02/2020 18:18
Bonjour à tous, je viens de programmer le premier programme 3D de raytracing sur une calculatrice FX92+ ! ( Marche uniquement sur la + qui contient une section algorithmique.
Comment cela fonctionne ? La calculatrice vous demande d'entrer ces différents données :
A : Largeur du cube 3D ( Conseillé pour test : 20)
B : Hauteur ( Conseillé pour test : 20)
C : Distance entre les deux cubes, effet de 3D ( Conseillé pour test : 16 )
M : Point de vue du cube entre 1 et 40, 40 -----------[Cube]--------------1 ( Conseillé pour test : 35)
Une fois toutes ses donnée entrées, le programme s'occupera de crée le cube puis de trouver les angles de manière à tracer l'ombre du raytracing.
Si par exemple je met M à 15, je verrais le cube de la droite, mais si je le met par exemple à 35, je le verrais à la gauche, mais si je choisis 0 et que je me met devant le cube, comme dans la réalité vous ne verrez qu'un carré.
Et bien sur l'ombre va du carré au point de vue par lequel vous regarder le cube 3D.
Amusez vous bien !
Code :
Aller à -60, -10
Style croix
Stylo écrit
Demander A
Demander B
Demander C
Demander M
Si M = 0 :
C = 0
Fin
S'orienter à 0 degrés
Avancer de A Px
S'orienter à 90
Avancer de B Px
Mettre variable D à x
Mettre variable E = -60
S'orienter à 180
Avancer de A Px
S'orienter à -90
Avancer de B PX
S'orienter à M x 4
Avancer de C Px
S'orienter à 0
Avancer de A px
S'orienter à 90
Avancer de B px
S'orienter à 180
Avancer de A PX
S'orienter à -90
Avancer de B PX
S'orienter à M x 4
Avancer de 0-C Px
Avancer de C PX
S'orienter à 0
Avancer de A PX
S'orienter à M x 4
Avancer de 0-C Px
Avancer de C
S'orienter à 90
Avancer de B Px
S'orienter à M x 4
Avancer de 0-C Px
S'orienter à M x 4
Avancer de C px
Avancer de 0-C Px
Stylo Relevé
Aller à -55, -25
Avancer de M Px
Mettre var F à x
Si M >= 0
Répéter jusqu'a D=E
Aller à F, -25
Stylo écrit
Aller à E, -10
Stylo relevé
Fin
Fin
Style flèche
Aller à F, -25
Fin
Voila le code, cela m'a pris 2 jours mais ça en valait la peine !
Amusez vous !
Fichier joint
Citer : Posté le 14/02/2020 18:31 | # | Fichier joint
Intéressant, effectivement il y a toutes les raisons pour que ce soit possible !
Je n'ai pas ma fx-92 SC+ ici (en stage), et je suis pas sûr que grand-monde s'amuse à recopier, donc j'ai au moins fait une version pour mon interpréteur fx-92 SC+ pour tester sur mon PC (ci-dessous, si jamais).
pendown
setvar 20,A
setvar 20,B
setvar 16,C
setvar 35,M
if M=0
setvar 0,C
if_end
orient 0
forward A
orient 90
forward B
setvar x,D
setvar -60,E
orient 180
forward A
orient -90
forward B
orient M*4
forward C
orient 0
forward A
orient 90
forward B
orient 180
forward A
orient -90
forward B
orient M*4
forward 0-C
forward C
orient 0
forward A
orient M*4
forward 0-C
forward C
orient 90
forward B
orient M*4
forward 0-C
orient M*4
forward C
forward 0-C
penup
goto -55, -25
forward M
setvar x,F
if M >= 0
until D=E
goto F, -25
pendown
goto E, -10
penup
until_end
if_end
goto F, -25
J'ai mis les paramètres que tu as indiqué mais ça ne donne probablement pas exactement le bon résultat. Je pense qu'il y a des couacs de copie sur ton sujet puisque :
La boucle "tant que D=E" est infinie : ni D ni E ne change de valeur dedans.
Il y a un Fin "en trop" à la fin du programme.
Mais il y sans doute aussi un problème dans mon programme.
Voilà quand même ce que ça me donne avec les paramètres par défaut !
J'attends de voir le résultat original !
Citer : Posté le 14/02/2020 19:32 | #
Autant pour moi, le Fin à la fin du programme doit être retiré, et j'ai également oublier de copier une ligne de code, dans la boucle Tant que il faut rajouter après stylo relevé, E = E + 1. ainsi qu'un bloc s'orienter a 180 et avancer de A px
Code :
Aller à -60, -10
Style croix
Stylo écrit
Demander A
Demander B
Demander C
Demander M
Si M = 0 :
C = 0
Fin
S'orienter à 0 degrés
Avancer de A Px
S'orienter à 90
Avancer de B Px
Mettre variable D à x
Mettre variable E = -60
S'orienter à 180
Avancer de A Px
S'orienter à -90
Avancer de B PX
S'orienter à M x 4
Avancer de C Px
S'orienter à 0
Avancer de A px
S'orienter à 90
Avancer de B px
S'orienter à 180
Avancer de A PX
S'orienter à -90
Avancer de B PX
S'orienter à M x 4
Avancer de 0-C Px
Avancer de C PX
S'orienter à 0
Avancer de A PX
S'orienter à M x 4
Avancer de 0-C Px
Avancer de C
S'orienter à 90
Avancer de B Px
S'orienter à M x 4
Avancer de 0-C Px
S'orienter à 180 (------- A rajouter
Avancer de A (------- A rajouter
S'orienter à M x 4
Avancer de C px
Avancer de 0-C Px
Stylo Relevé
Aller à -55, -25
Avancer de M Px
Mettre var F à x
Si M >= 0
Répéter jusqu'a D=E
Aller à F, -25
Stylo écrit
Aller à E, -10
Stylo relevé
Mettre variable E à E + 1 (----- A rajouter !
Fin
Fin
Style flèche
Aller à F, -25
Eh voila le programme marche comme il le faut !
D'ailleurs je viens juste de découvrir ce forum Planet Casio, je commencerais donc à poster tout mes jeux ici !
Bon amusement !
Citer : Posté le 14/02/2020 19:38 | # | Fichier joint
Ah, c'est mieux, bien joué !
Voilà le code dans le style de l'interpréteur pour ceux qui voudraient essayer mais pas tout retaper...
pendown
setvar 20,A
setvar 20,B
setvar 16,C
setvar 35,M
if M=0
setvar 0,C
if_end
orient 0
forward A
orient 90
forward B
setvar x,D
setvar -60,E
orient 180
forward A
orient -90
forward B
orient M*4
forward C
orient 0
forward A
orient 90
forward B
orient 180
forward A
orient -90
forward B
orient M*4
forward 0-C
forward C
orient 0
forward A
orient M*4
forward 0-C
forward C
orient 90
forward B
orient M*4
forward 0-C
orient 180
forward A
orient M*4
forward C
forward 0-C
penup
goto -55, -25
forward M
setvar x,F
if M >= 0
until D=E
goto F, -25
pendown
goto E, -10
penup
setvar E+1,E
until_end
if_end
goto F, -25
Et voilà la tête ! Sympa !