Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [Tutoriel] La 3D
NeuronixHors ligneFondateurPoints: 4488 Défis: 21 Message

[Tutoriel] La 3D

Posté le 02/01/2006 13:12

Tout programmeur en basic se pose la question de la "3D" ...qui sonne si mystérieusement et délicieusement à l'oreille de tout accro du monde virtuel.

Je propose ici une approche d'une methode de rendu d'objets en 3D. Si vous etes un programmeur courageux et ambitieux passez votre chemin, regardez mes progs Util 3D et graph 3D sans regarder le code et cherchez vous meme

Je vais enployer la méthode du drawstat, pensez à regarder le tutorial dédié à cette technique si vous n'etes pas au point :).

On va travailler sur un objet simple : un cube de 2 unités de coté centré sur l'origine.

Entrons ses coordonnées :
{1,1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1}->List 1
{-1,1,1,-1,-1,-1,1,1,1,1,1,1,-1,-1,-1,-1}->List 2
{-1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,1,-1,1,1}->List 3


Notez que pour avoir un beau cube avec tous ses aretes en drawstat il faut repasser par certains pouints d'ou le nombre de points.

Ici List 1 = X List 2 = Y et List 3 = Z

Nous allons partir du principe que pour afficher le cube en 3D il suffit de retenir ses coordonnées en X et Y. Donc essayons d'afficher notre cube :

//paramétrez le s-graph 1 pour le drawstat en xyLine et Dot
S-WindMan // pour que nous puissions imposer la fenetre
View-Window -4,4,0,-2,2,0 // on peux prendre cette fenetre pour l'exemple car avec le coté du cube est de longueur 2
Drawstat

Et là on obtient :


On dirait un carré et pas un cube car on n'a pas ajouté d'effet de fuite. On fera ça plus tard, pour le moment on va faire tourner le cube sur lui meme

On a les coordonnées cartésiennes des points du cube mais on va utiliser les coordonnées polaires pour la démonstration de la formule que j'ai utilisé qui est sans doute la plus rapide et la plus simple.

On va faire tourner le cube selon le plan x-y puis y-z puis x-z donc en fait à chaque fois on est ramené à une rotation simple dans un plan tel que vous en connaissez depuis la seconde (au moins).

Regardez l'image suivante pour mieux comprendre ce qui suit :


Le point initial M fait un angle µ avec l'axe des abscisses et est à une distance r de O.
M' le point image apres la rotation est également à une distance r mais fait un angle µ+µ' avec l'axe des abscisses où µ' est l'angle de rotation.

On donc en coordonnées polaires : M(r;µ) M'(r,µ+µ') et en coordonnées cartésiennes M(x,y) et M'(x',y')

On a :
x = r*cos µ x' = r*cos (µ+µ')
y = r*sin µ y' = r*sin (µ+µ')

J'imagine que vous connaissez tous tres bien vos formules de trigo donc je ne vous rappelle pas que
cos (a+b) = cos a*cos b - sin a*sin b
sin (a+b) = sin a*cos b + sin b*cos a

D'où
x' = r*cos µ*cos µ' - r*sin µ*sin µ'
= x*cos µ' - y*sin µ'

y' = r*sin µ*cos µ' + r*sin µ' *cos µ
= y*cos µ' + x*sin µ'

Et voila ! on a une magnifique formule en fonction de x, y et µ' l'angle de rotation!!!!
Simple et extremement rapide! car il suffit de 2 calculs par rotation!

J'ai mis beaucoup beaucoup de temps pour trouver ceci meme si la formule parait simple une fois ecrite il faut y penser...

Voila, je ne vous fais pas le code, je vous laisse gratter un peu quand meme et au passage vous venez de lire en 2 min ce que j'ai cherché pendant des mois...1 an je pense :(.... (car MOI je voulais faire tout seul )

Code d'exemple :

ClrGraph
{1,1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1}->List 1
{-1,1,1,-1,-1,-1,1,1,1,1,1,1,-1,-1,-1,-1}->List 2
{-1,-1,-1,-1,-1,1,1,-1,1,1,-1,1,1,-1,1,1}->List 3
S-Grph1 DrawOn,xyLine,List1,List2,1,Dot
0->A~C
Do
"A"?->A
"B"?->B
"C"?->C
Cls
Text 1,1,"Calcul."
List 1 * cos A - List 2 * sin A ->List 4
List 1 * sin A + List 2 * cos A ->List 2
List 4->List 1
Text 1,30,"."
List 2 * cos B - List 3 * sin B ->List 4
List 2 * sin B + List 3 * cos B ->List 3
List 4->List 2
Text 1,34,"."
List 1 * cos C - List 3 * sin C ->List 4
List 1 * sin C + List 3 * cos C ->List 3
List 4->List 1
Cls
Drawstat[DISP]
Lpwhile 1=1



Pages : 1, 2Suivante
NinestarsHors ligneMembrePoints: 2171 Défis: 22 Message

Citer : Posté le 29/05/2012 21:37 | #


Comment est-il possible de cacher les arrêtes derrières ?
LimachiHors ligneYoutuberPoints: 2798 Défis: 67 Message

Citer : Posté le 29/05/2012 22:46 | #


tu veux un cours particulier? et en quel langage? si tu veux mon aide, tu peux m'envoyer un message, je tenterais de t'aider (mais si l'astuce est conne est simple (mathématiques niveau 2onde ou 1ère) l'utilisation peut parfois être ardue).
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Dark stormHors ligneMembre d'honneurPoints: 10765 Défis: 174 Message

Citer : Posté le 29/05/2012 22:50 | #


Moi je veut bien tant que t'y es
Je risque d'en avoir besoin pour mon Blender
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Ne0tuxHors ligneMembre d'honneurPoints: 3246 Défis: 261 Message

Citer : Posté le 29/05/2012 23:08 | #



Si quelqu'un sait vraiment comment cacher des arrêtes "derrières" pour une modélisation 3D pleine en Basic, je suis également intéressé !

Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Vdragon.bHors ligneMembrePoints: 1401 Défis: 0 Message

Citer : Posté le 30/05/2012 13:15 | #


je suis intéressé aussi.
there are many incredible things in the world...So,believe in yours dreams!
I own a graph 3575+.

Dark stormHors ligneMembre d'honneurPoints: 10765 Défis: 174 Message

Citer : Posté le 30/05/2012 13:19 | #


Le tuto ! Le tuto !
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LoulouxHors ligneAncien administrateurPoints: 7035 Défis: 61 Message

Citer : Posté le 30/05/2012 14:15 | #


Vous avez vu ma news sur la 3D ? Dedans il y avait un lien dans lequel vous trouvez comment faire de la 3D pleine ou filaire avec même placage de texture !
Ca pourrait aider pour ton Blender Dark storm.
Dark stormHors ligneMembre d'honneurPoints: 10765 Défis: 174 Message

Citer : Posté le 30/05/2012 14:42 | #


je l'avait carrément oubliée
J'y go
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LimachiHors ligneYoutuberPoints: 2798 Défis: 67 Message

Citer : Posté le 31/05/2012 00:03 | #


ok, je ferais un tuto simple comme bonjour si possible, pour les figures convexes (cube) et concaves (plusieurs angles de différentes tailles, ou une série de cube par exemple)

l'une des techniques consiste a utiliser l'angle de rotation du cube, et l'autre la normale des faces du cube (plus dur et plus long, essentiellement pour le C si il y a plusieurs formes géométriques)

Ajouté le 31/05/2012 à 00:29 :
tenez: lien
j\'ai fait viteuf un petit tuto sur l\'occlusion de face, si sa vous intéresse
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
TibinaireHors ligneMembrePoints: 0 Défis: 0 Message

Citer : Posté le 14/01/2014 22:43 | #


Merci beaucoup pour ce tuto
Je débute en casio et sa ma vraiment aide
Et j'ai tout compris au calcul alors que ne suis qu'en 2nd
C'est vraiment bien fait
PseudopourriHors ligneMembrePoints: 182 Défis: 9 Message

Citer : Posté le 19/02/2014 21:11 | #


Quelqu'un connait un site ou on peut apprendre le cosinus,le sinus, la tengeante (je suis pas sur que ça s'écrit comme ça ) et la trigonometrie (je suis qu'en 4eme a l'heure où je parle et j'ai pas en vie d'attendre un ans ) mercie d'avance.
je code en...
je code en:

-ASM (assembleur) sur x86 et gb-Z80
-locomotive basic/amstrad basic
-Basic Casio
-VBS
-Batch
-Bash
-Python 3.4
-html
-CSS
-javascript
-Lua
-brainfuck
-ruby

Il faut savoir que je ne maitrise pas parfaitement tout ces langages

[/spoiler]
Remerciment

Ma calto: graph 75
Dark stormHors ligneMembre d'honneurPoints: 10765 Défis: 174 Message

Citer : Posté le 19/02/2014 21:15 | #


Cadeau
http://fr.openclassrooms.com/sciences/cours/manier-la-trigonometrie
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
TenmatxHors ligneMembrePoints: 994 Défis: 2 Message

Citer : Posté le 19/02/2014 21:32 | #


Un an ? C'est seulement en première qu'on apprend vraiment ce que c'est.
Mes programmes de maths
Mes programmes de maths

Toutes les formules de Première S.
Toutes les formules de Terminale S.
Un programme de calculs.
Mes meilleurs jeux
Mes meilleurs jeux

Jeu gagnant des 48h CPC n°12

Mon site de discussion pour ados : http://entre-ados.net/
Mon éditeur de cours en ligne et plateforme de partage : http://wordline.xyz
AlphacreatorHors ligneMembrePoints: 1464 Défis: 43 Message

Citer : Posté le 20/02/2014 08:57 | #


Je confirme: on ne voit pas le cercle trigonométrique et les angles orientés avant la 1ère
(enfin pour le cercle on le voit un peu en seconde)
PseudopourriHors ligneMembrePoints: 182 Défis: 9 Message

Citer : Posté le 20/02/2014 18:35 | #




Ajouté le 20/02/2014 à 18:42 :
Tenmatx/Alphacreator:On m'a dit que c'était en troisieme et que l'on le revoyait en seconde.
je code en...
je code en:

-ASM (assembleur) sur x86 et gb-Z80
-locomotive basic/amstrad basic
-Basic Casio
-VBS
-Batch
-Bash
-Python 3.4
-html
-CSS
-javascript
-Lua
-brainfuck
-ruby

Il faut savoir que je ne maitrise pas parfaitement tout ces langages

[/spoiler]
Remerciment

Ma calto: graph 75
PositonHors ligneRédacteurPoints: 2396 Défis: 57 Message

Citer : Posté le 20/02/2014 22:21 | #


En troisième on voit la trigonométrie dans le triangle rectangle, mais je ne pense pas que ce te seras de grande utilité
<<< Si jusque là vous aviez cru que mon pseudo est "Position", il est encore temps de regarder à gauche

Ça m'énerve les gens qui ne finissent pas leurs
Dark stormHors ligneMembre d'honneurPoints: 10765 Défis: 174 Message

Citer : Posté le 20/02/2014 22:23 | #


Ca l'est pour la 3D. Perso j'ai retrouvé/recréé les formules grâce à ça

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
NinestarsHors ligneMembrePoints: 2171 Défis: 22 Message

Citer : Posté le 20/02/2014 22:55 | #


Oui mais faut avoir un vrai recul sur ces relations pour pouvoir les appliquer ici. C'est pas avec quelques heures de cours dessus qu'il l'aura.
PseudopourriHors ligneMembrePoints: 182 Défis: 9 Message

Citer : Posté le 22/02/2014 19:56 | #


Je me disait bien aussi que c'est bizarre que dans le "cours" il parlait de triangle rectangle du cosinus qui est opposé à l'hypotenus etc...
je code en...
je code en:

-ASM (assembleur) sur x86 et gb-Z80
-locomotive basic/amstrad basic
-Basic Casio
-VBS
-Batch
-Bash
-Python 3.4
-html
-CSS
-javascript
-Lua
-brainfuck
-ruby

Il faut savoir que je ne maitrise pas parfaitement tout ces langages

[/spoiler]
Remerciment

Ma calto: graph 75
AlphacreatorHors ligneMembrePoints: 1464 Défis: 43 Message

Citer : Posté le 22/02/2014 20:01 | #


Dans un triangle ABC rectangle en A: cos ABC= AB/BC (attention, c'est l'angle ABC)
AB: côté adjacent, BC: hypoténuse
Après ça c'est le truc basique, on ne voit le cercle trigonométrique qu'en 3ème et encore, c'est pas grand chose, ça devient intéressant en 1ère
Pages : 1, 2Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 40 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