Toujours du cube!

Olympiades mathématiques, énigmes et défis
Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

Toujours du cube!

par fatal_error » 05 Aoû 2014, 10:58

Hello,

un ptit peu de math, un ptit peu de projections et d'algorithmie.
Voici un petit exercice melant info et math..

On se donne un cube de côté de longueur 1 (dans R3(R,x,y,z)) ABCDEFGH
Soit O l'oeil d'observation.
Soit n le vecteur direction (pas forcément normé). O regarde dans cette direction.
Soit f la focale (idem un scalaire)
Soit (P) le plan orthogonal à n, et à distance f de O.

Le but est de faire parcourir O sur la diagonale (AG) du cube, et voir qu'est-ce qui est projeté sur (P) (idem ce que voit O).

(en gros à chaque pas de temps t, O avance sur la diagonale, P est parallèle au plan du pas de temps précédent, et les points du cube sont projetés différemment)

Idéalement avec un gif!

PS: évidemment, le but est de comparer la façon dont sont projetés les points sur le plan, utiliser un 3rd party n'a pas beaucoup d'intérêt..
la vie est une fête :)



LeJeu
Membre Irrationnel
Messages: 1142
Enregistré le: 24 Jan 2010, 21:52

par LeJeu » 06 Aoû 2014, 10:30

fatal_error a écrit:Hello,

un ptit peu de math, un ptit peu de projections et d'algorithmie.
Voici un petit exercice melant info et math..

On se donne un cube de côté de longueur 1 (dans R3(R,x,y,z)) ABCDEFGH
Soit O l'oeil d'observation.
Soit n le vecteur direction (pas forcément normé). O regarde dans cette direction.
Soit f la focale (idem un scalaire)
Soit (P) le plan orthogonal à n, et à distance f de O.

Le but est de faire parcourir O sur la diagonale (AG) du cube, et voir qu'est-ce qui est projeté sur (P) (idem ce que voit O).

(en gros à chaque pas de temps t, O avance sur la diagonale, P est parallèle au plan du pas de temps précédent, et les points du cube sont projetés différemment)



Idéalement avec un gif!

PS: évidemment, le but est de comparer la façon dont sont projetés les points sur le plan, utiliser un 3rd party n'a pas beaucoup d'intérêt..



Le gif animé .. la marche est haute Fatal_error ... ma contribution : le calcul des coordonnées des points du cubes en fonction du déplacement de O sur AG et de leur projeté.

Pour les calculs de projections, le mieux doit être de changer de repère, et de prendre un repère u,v,w avec w selon la diagonale du cube (AG)

Dans ce nouveau repère G est de hauteur , et les autres de hauteurs et

Dans ce repère vu de dessus ( selon w) le cube est vu comme un hexagone inscrit dans un cercle de rayon ( un petit coup de pythagore avec la hauteur précédente)

Pour calculer maintenant les coordonnées en u et v c'est une simple projection d'angle PI/3
ce qui nous donne :


et l'equivalent pour les points de hauteurs

Maintenant quand O va se déplacer de t de A a G , il suffira de décrémenter la hauteur de tous les points de t

L'étape suivante est le calcul du projeté des points sur le plan P ( Perpendiculaire à AG , on est d'acord ?)

Soit un point de coordonnée ( u,v,w) et soit le plan de projection a une distance de d ( la focale qui diminue de t à chaque pas)
si w >0 et w<d , le projeté du point est de coordonnées ( u * d/w, v *d/w)
Si w<0 le point est projeté à l'infini ( on ne le voit pas)

Le problème maintenant est le calcul des segments projetés, entre deux points visibles pas de problème,
Entre un point visible et un point derrière... ca va être un peu plus compliqué ...

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 08 Aoû 2014, 09:21

hello,

Le gif animé .. la marche est haute Fatal_error

on peut s'en sortir en faisant plein de jpg, puis imagemagick / convert pour générer un gif

Perpendiculaire à AG , on est d'acord ?

ui

si w >0 et w<d , le projeté du point est de coordonnées ( u * d/w, v *d/w)
Si w<0 le point est projeté à l'infini ( on ne le voit pas)

Le problème maintenant est le calcul des segments projetés, entre deux points visibles pas de problème,
Entre un point visible et un point derrière... ca va être un peu plus compliqué ...

je suis parti du principe que un sommet c'est un point particulier, mais que tout point d'un segment se projette sur le plan.
Du coup, entre un point devant et un point derriere le plan, je projette tous les points de la droite (donc en particulier du point devant, jusqu'au point intersection de la droite et du plan)
En gros si j'ai une face avec deux points devant et un point derriere, ca me cree un point de plus à tracer...

voici un gif pour voir à quoi ca ressemble. J'exclue pas les fautes, j'ai pas mal de mal à visualiser dans ma tete à quoi ca doit ressembler!

Image
la vie est une fête :)

LeJeu
Membre Irrationnel
Messages: 1142
Enregistré le: 24 Jan 2010, 21:52

par LeJeu » 08 Aoû 2014, 09:58

fatal_error a écrit:hello,


on peut s'en sortir en faisant plein de jpg, puis imagemagick / convert pour générer un gif


ui


je suis parti du principe que un sommet c'est un point particulier, mais que tout point d'un segment se projette sur le plan.
Du coup, entre un point devant et un point derriere le plan, je projette tous les points de la droite (donc en particulier du point devant, jusqu'au point intersection de la droite et du plan)
En gros si j'ai une face avec deux points devant et un point derriere, ca me cree un point de plus à tracer...

voici un gif pour voir à quoi ca ressemble. J'exclue pas les fautes, j'ai pas mal de mal à visualiser dans ma tete à quoi ca doit ressembler!

[


Salut Fatal

quelque remarques

1) très jolie proposition : bravo, je n'avais pas osé passer à la construction !

2) il me semble que tu as le résultat de la projection sur 'un plan de coupe qui traverse le cube et pas de ce que verrait un oeil O qui traverse le cube suivant la diagonale, projeté sur un plan focal, car on devrait avoir alors des lignes infinies ?

3) il y a des trucs bizarres dans ton dessin qui sont difficiles à comprendre, en tout cas je n'arrive pas à me projeter et à interpréter, surtout le début , car la fin, elle se comprend bien:

il me semble que l'on devrait voir le coin du fond dès la premier image ( bleu rouge violet) alors que l'on ne le voit qu'à partir de la seconde image ?

D'un coté, c'est tentant d'essayer de l'autre ca va bientôt être l'heure de l'apéro au village ...

Cliffe
Membre Rationnel
Messages: 967
Enregistré le: 12 Juin 2012, 13:25

par Cliffe » 08 Aoû 2014, 10:09

Dessine un cube en openGl et tu fais une boucle pour faire "avancer" l'oeil.

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 08 Aoû 2014, 10:20

salut LeJeu,


2) il me semble que tu as le résultat de la projection sur 'un plan de coupe qui traverse le
cube et pas de ce que verrait un oeil O qui traverse le cube suivant la diagonale, projeté sur un plan focal, car on devrait avoir alors des lignes infinies ?

en fait, la croix verte, c'est mon oeil, et la croix rouge c'est un point du plan. (plus précisément, il est à la distance focale de l'oeil)
Je trace toutes les droites de l'oeil à un sommet du cube, et j'en prend l'intersection sur le plan.
J'ai un peu de mal avec l'infini, mais je pense que le problème vient quand il y a un point derrière le plan pour une face considérée.

si on nomme D,A,M, respectivement les points D devant, A derrière, et M intersection de (DA) avec le plan, si on projette D en D' sur le plan, alors il faudrait tracer [D'M) au lieu de [D'M]. Enfin, je pense..
Je vais regarder, mais c'est sur que ya un problème pour l'instant!


il me semble que l'on devrait voir le coin du fond dès la premier image ( bleu rouge violet) alors que l'on ne le voit qu'à partir de la seconde image ?

la toute première image, en fait, on est pas encore dans le cube!

Dessine un cube en openGl et tu fais une boucle pour faire "avancer" l'oeil.

LIRE
PS: évidemment, le but est de comparer la façon dont sont projetés les points sur le plan, utiliser un 3rd party n'a pas beaucoup d'intérêt..


edit: par rapport à l'infini, je pense qu'il faut pas regarder le point derrière le plan... mais le point derrière le plan qui passe par l'oeil et qui est parallèle au plan de projection.
l'idée que j'arrive pas à formaliser c'est : tant que le point est sur la demi droite, mais devant le plan de l'oeil, alors tout point de cette demi droite est projeté sur la demi droite projective, mais si on passe derrière le plan de l'oeil, on arrive n'importe ou... alors que plus on se rapproche du plan de l'oeil, et plus le point projeté tend vers "la fin" de la demi droite projective...
Bref, je faisais une coupe alors que c'est pas bon, l'infini est trouvé lorsque le point se rapproche du plan de l'oeil... A tester!
la vie est une fête :)

LeJeu
Membre Irrationnel
Messages: 1142
Enregistré le: 24 Jan 2010, 21:52

par LeJeu » 08 Aoû 2014, 15:22

fatal_error a écrit:salut LeJeu,

en fait, la croix verte, c'est mon oeil, et la croix rouge c'est un point du plan. (plus précisément, il est à la distance focale de l'oeil)

edit: par rapport à l'infini, je pense qu'il faut pas regarder le point derrière le plan... mais le point derrière le plan qui passe par l'oeil et qui est parallèle au plan de projection.
l'idée que j'arrive pas à formaliser c'est : tant que le point est sur la demi droite, mais devant le plan de l'oeil, alors tout point de cette demi droite est projeté sur la demi droite projective, mais si on passe derrière le plan de l'oeil, on arrive n'importe ou... alors que plus on se rapproche du plan de l'oeil, et plus le point projeté tend vers "la fin" de la demi droite projective...
Bref, je faisais une coupe alors que c'est pas bon, l'infini est trouvé lorsque le point se rapproche du plan de l'oeil... A tester!


Et si tu mettais plutot le plan focal derriere l'oeil ?

ca permettrait dans ta premiere image de voir les trois faces complets du cubes , quand tu n'es pas à l'intérieur?

Image

Et bien sur , tu ne vois que ce qui est devant ton oeil

(Et je crois que l'on est d'accord - Un segment qui commence derierre ton oeil et qui termine devant est alors une demi droite)

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 08 Aoû 2014, 15:54

Et si tu mettais plutot le plan focal derriere l'oeil ?

ben ce que voit l'oeil c'est ce qu'il y a sur le plan focal, donc si le plan focal est derrière l'oeil, l'oeil voit rien.

si on regarde ton schéma, j'ai l'impression que la flèche noire à double sens central... c'est un dioptre.
jme rappèle plus trop, mais tout ce que ca illustre, c'est que le rayon qui arrive parallèle par rapport à l'axe converge au même point sur la rétine, parce que un rayon passant par l'axe n'est pas dévié et parce que deux droites parallèle se coupent en un même point, ici la rétine.
(qqch dans ce gout là)

Mais de manière général, le point qu'on observe est à gauche, le "plan focal" au milieu et l'oeil == rétine à droite!
Bref, je pense qu'il faut garder oeil/ plan focal, point de l'espace.

Le seul truc qui pue c'est que le plan est pas infini, c'est 500px x 500px, va falloir placer des points sur les bords pour colorier les faces... :mur:

PS: ca permettrait dans ta premiere image de voir les trois faces complets du cubes , quand tu n'es pas à l'intérieur?

ben là on les voit bien les trois faces:
Image
la vie est une fête :)

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 04 Sep 2014, 10:17

après pas mal d'heures perdues... voilà un nouveau gif
Image


problème plus intéressant qu'il n'y parait (notamment par rapport aux erreurs numériques et l'infini!)
la vie est une fête :)

 

Retourner vers ⚔ Défis et énigmes

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 18 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite