Calculatrices Casio Graphiques : Jeux, programmes, cours, pompes, astuces et programmation sur calculatrice graphique Casio et ClassPad 300 : programmes casio et jeux casio...

Programmes et jeux pour calculatrices Casio Graph et calculatrice ClassPad 300, jeux casio, cours...Calcul formel pour Graph 85
 

Forum Programmation Casio

 
 

Programmes et jeux pour calculatrices Casio Graph et calculatrice ClassPad 300, jeux casio, cours...: Forums

Bon anniversaire à dragoon_lord (16 ans)

Forum Casio

Un espace convivial pour poser vos questions ou simplement venir discuter... Entrer

Forum Programmation

Toutes les discussions à propos de la programmation sur calculatrices Casio... Entrer

Foire aux Questions

Les réponses aux questions les plus courantes sont ici ! Entrer

Forum programmation Casio
  

Passer à la 3D

Auteur Passer à la 3D
marcf3
Programmeur Basic



Messages: 35
Calculatrice : Graph 85 SD
Message posté: 01-03-2008 à 14:47     Editer/Supprimer les messages postés   Renvoyer une note
bonjour
je commence à programmer en langage C, et j'ébauche des calculs sur ma calto pour connaitre "comment on fait" un certain calcul.

le probleme que je me pose est un des plus ardus:
comment passer d'une liste de points en 3D à un affichage 2D?
g réduit le cas à l'affichage d'un seul point:
on connait les variables suivantes, qui sont celles de la calto bien sur:

A: abscisse du point
B: ordonnée du point
C: hauteur du point

D: abscisse de la caméra
E: ordonnée de la caméra
F: hauteur de la caméra

U: rotation horizontale de la caméra
V: rotation verticale de la caméra
W: rotation axiale de la caméra

merci d'avance pour les cracks qui réussiraient à pondre un code source qui réponde à ces instructions:
il y a des contraintes:
à la fin, on doit obtenir:

I: abscisse du point à l'écran
J: ordonée du point à l'écran

il faut tenir compte de la perspective.
le point ne doit être affiché que si il est dans le champ de vision de la caméra, c'est à dire environ 90 degrés.
les mesures d'angles doivent être en radians (comme en C)
ici, la taille de l'écran est 127x63, mais le repère à choisir pour afficher les points
est:
viewwindow: -63,63,1,-31,31,1 (vous voyez à peu près, quoi.)

celui qui trouvera la solution recevra ma bénédiction



 
Alexis
Webmaster



Messages: 820
Calculatrice : Graph 35+
Message posté: 01-03-2008 à 16:48     Editer/Supprimer les messages postés   Renvoyer une note
Bonjour,
si tu a un niveau post-bac en math, je pourrai te donner des pistes. Sinon, j'essaierai de te faire les calculs vers la fin de la semaine prochaine si ça t'intéresse.



  Allez sur le site web de l'utilisateur Alexis  
dunedune
Utilisateur Graph



Messages: 186
Calculatrice : Graph 35+
Message posté: 01-03-2008 à 17:33     Editer/Supprimer les messages postés   Renvoyer une note
Félicitations pour ton courage alexis ! Mais n'est-ce pas accessible avec de simples co et sinus et tgts ?


 
Alexis
Webmaster



Messages: 820
Calculatrice : Graph 35+
Message posté: 01-03-2008 à 19:19     Editer/Supprimer les messages postés   Renvoyer une note
on a donc :
Xm'=cos a*sin b*(Xm-Xo)+sin a*sin b*(Ym-Yo)+cos b*(Zm-Zo)
Ym'=-sin a*(Xm-Xo)+cos a*(Ym-Yo)

où :
Xm' et Ym' sont les coordonnées sur l'écran
Xm, Ym, Zm les coordonnées du point M
Xo, Yo, Zo les coordonnées de la caméra
a et b les angles pour l'orientation de la caméra



  Allez sur le site web de l'utilisateur Alexis  
marcf3
Programmeur Basic



Messages: 35
Calculatrice : Graph 85 SD
Message posté: 02-03-2008 à 16:25     Editer/Supprimer les messages postés   Renvoyer une note
ah ouais... en fait c'est plus simple que je ne le pensais.

j'avais déjà réussi à afficher des points mais dans un espace limité, et je me suis fâché avec les angles:

tu sais, je m'arrangeais pour trouver les 2 angles qui définissaient la direction ou se trouve le point, et j'obtenais la position à l'écran grâce à une tangente qui donnais un nombre entre 1 et -1. on multipliait ce nombre par la taille de l'écran...et voila.

mais dés que le point passait DERRIERE la caméra, bim! il revenait devant, peinard... et à l'envers. tu est sur que la définition que tu m'as donnée est complète et marche avec n'importe quel point? (je n'ai pas vu de conditions)

je vais l'essayer, et je te dis si sa marche.

sinon, jsuis en 1ère, et merci pour ton aide!






 
Alexis
Webmaster



Messages: 820
Calculatrice : Graph 35+
Message posté: 02-03-2008 à 21:41     Editer/Supprimer les messages postés   Renvoyer une note
en effet.
Pour empêcher les points situés "derrière" l'écran d'apparaître, il faut que :
cos a*cos b*(Xm-Xo)-sin a*cos b*(Ym-Yo)+sin b*(Zm-Zo)>=0



  Allez sur le site web de l'utilisateur Alexis  
marcf3
Programmeur Basic



Messages: 35
Calculatrice : Graph 85 SD
Message posté: 05-03-2008 à 17:38     Editer/Supprimer les messages postés   Renvoyer une note
j'ai testé ton code mais il y a un souci:
la 3D manque de profondeur. si j'éloigne la caméra, rien ne se passe, et on n'a pas de point de fuite.

voici un exemple de 3D que je recherche:



bon, bien sur c pioché sur le net et je ne demande pas d'afficher des surfaces
mais tu remarques que ça le fait mieux.

j'ai fait une étude là dessus, il faut connaitre les coordonées polaires de chaque point en 3D et y ajoutant les angles de la caméra. mais je n'arrive pas à trouver la formule miracle!
cette formule renverrait 2 angles qui, une fois passés par une tangente, deviennent ces fameuses coordonées à l'écran.



 
Alexis
Webmaster



Messages: 820
Calculatrice : Graph 35+
Message posté: 05-03-2008 à 19:08     Editer/Supprimer les messages postés   Renvoyer une note
"la 3D manque de profondeur. si j'éloigne la caméra, rien ne se passe, et on n'a pas de point de fuite" tout ça est lié au fait qu'il n'y a pas de point de fuite.
Les formules que je t'ai données ne prennent pas en compte ce point de fuite parce que je n'étais pas sûr qu'elles étaient correctes.



  Allez sur le site web de l'utilisateur Alexis  
marcf3
Programmeur Basic



Messages: 35
Calculatrice : Graph 85 SD
Message posté: 08-03-2008 à 15:44     Editer/Supprimer les messages postés   Renvoyer une note

j'ai élaboré un nouveau code qui marche à peu près bien pour la 3D réelle.
il y a la profondeur.

j'ai utilisé 3 types de coordonées:
coordonées cartésiennes, polaires et sphériques.

le dernier type est assez difficile à concevoir, pourtant c celui qui permet la rotation.
(il s'agit de coordonnés polaires dans l'espace ou chaque angle est fonction de l'autre et vice versa)
après moulte conditions et formules à rallonge, on aboutit à 2 angles équivalents à ceux des "rayons de lumière" qui percutent la caméra à des coordonées x et y.
c'est une sorte de projection, en fait.

mais mon code est tellement long, et je ne suis pas sur kil marche dans tous les cas... kan j'en aurai le temps, je l'écrirai sur le forum et j'ajouterai des images.



 
Alexis
Webmaster



Messages: 820
Calculatrice : Graph 35+
Message posté: 08-03-2008 à 16:53     Editer/Supprimer les messages postés   Renvoyer une note
ok
sinon pour ajouter un effet de profondeur, tu peux faire :
d=K*sqr((Xm-Xo)^2+(Ym-Yo)^2+(Zm-Zo)^2)
où K est une constante>1.
et prendre pr abscisses et ordonnées :
X''m=X'm/d
Y''m=Y'm/d



  Allez sur le site web de l'utilisateur Alexis  
marcf3
Programmeur Basic



Messages: 35
Calculatrice : Graph 85 SD
Message posté: 09-03-2008 à 15:48     Editer/Supprimer les messages postés   Renvoyer une note

je ne comprend pas très bien cette formule... mais bon je vais l'essayer, pour voir.
je croyais que tout était une affaire d'angles:

lorsque l'on regarde un objet, il renvoie vers notre oeil un rayon lumineux qu'on peut intérpréter comme une droite. cette droite est égale au rayon d'une sphère virtuelle. lorsqu'on fait pivoter notre tête, cela revient à déplacer l'objet sur la sphère.
pour afficher l'objet sur un écran, il suffit de récupérer les 2 angles avec lequels le rayon percute notre oeil. après, on leur applique tan(angle) et c'est fait.

mais raisonner comme ça, sa donne des calculs trop complexes...
je vais tester le code.



 
Alexis
Webmaster



Messages: 820
Calculatrice : Graph 35+
Message posté: 09-03-2008 à 16:36     Editer/Supprimer les messages postés   Renvoyer une note
oui, je vois ce que tu veux dire.
Bon courage pour la suite



  Allez sur le site web de l'utilisateur Alexis  
marcf3
Programmeur Basic



Messages: 35
Calculatrice : Graph 85 SD
Message posté: 12-03-2008 à 19:20     Editer/Supprimer les messages postés   Renvoyer une note

j'ai testé ton code:
K=?
K fait en effet varier la "taille" de l'image des points (en l'occurence, un cube)
mais K ne devrait pas être constante puisque l'on ne voit pas les 8 points.

il s'agit donc d'une affaire de coordonées sphériques.

j'ai vu récement des librairies qui traitaient la 3D donc je pense que je vais laisser
tomber pour le moment.
dommage j'avait fait une bonne percée, là



 
marcf3
Programmeur Basic



Messages: 35
Calculatrice : Graph 85 SD
Message posté: 14-04-2008 à 16:02     Editer/Supprimer les messages postés   Renvoyer une note

EUREKA
j'ai trouvé le code pour visualiser jusqu'à des maillages en 3 dimensions,
avec effet de profondeur, comme dans les jeux! (pas la isométrique, hein )

j'enverrai bientot un lien vers un programme G1M (eh oui...) capable de faire
ça, avec des commentaires, de l'aide pour l'intégrer dans d'autres progs.
3DVIEWER!



 
PierrotLL
Administrateur



Messages: 762
Calculatrice : Graph 85
Message posté: 14-04-2008 à 17:34     Editer/Supprimer les messages postés   Renvoyer une note
Bien joué, je regarderais ça.

Mais ça lagg pas trop?



 
marcf3
Programmeur Basic



Messages: 35
Calculatrice : Graph 85 SD
Message posté: 15-04-2008 à 18:50     Editer/Supprimer les messages postés   Renvoyer une note

avec toutes les options activées, oui sa rame. normal.
mais ce prog pourrait servir à des supports plus puissants.
(je sais qu'il y a le GPU pour les ordis par exemple)

voici le lien vers 3DVIEWER DEMO:

http://www.jeuxcasio.com/modules/Downloads/getftemp.php?nom=3DV~DEMO.G1M

j'ai mis demo car la version complète est trop compliquée (et lente)
pour être mise sur une g85, après c le classpad.



 
Meetic - Les règles du jeu ont changé
  
Bloquer le sujet Déplacer le sujet Supprimer le sujet
 
     


Toutes les pages et les images de jeux casio appartiennent à http://www.jeuxcasio.com ©2002-2008
Toute reproduction partielle ou totale de Jeuxcasio.com ou de son contenu est strictement interdite. | Casio est une marque déposée par le groupe Noblet

Bac Français Meeticadblocktest

Il est 21:28:19