Page 1 sur 3

Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 16:04
par cjorssen
Bonjour à tous,

Je suis un très récent utilisateur d'asymptote et j'essaye de faire mes premiers pas grâce aux exemples de P.Ivaldi et de G.Marris.

Ce qui m'intéresse par dessus tout c'est la 3D (pour le reste, je préfère utiliser tikz), mais je trouve que ce n'est pas facile de s'y retrouver... Je cherche à faire un schéma 3D du dispositif des fentes d'Young, avec vision sur un écran, où la figure d'interférence apparaîtrait sur l'écran et (cela serait vraiment génial) où on verrait les hyperboloïdes d'éclairement maximal (lieu des points M où $S_1M - S_2M = k \lambda$. Si un gentil contributeur pouvait me donner les grandes lignes du début du commencement, cela m'aiderait beaucoup :D

Voilà mon modeste début... Je ne sais pas tracer les hyperboloïdes et je ne sais pas comment faire apparaître leurs intersections avec le plan de l'écran.

Code: Tout sélectionner
import three;
import graph3;
size(8cm,0);
currentprojection=orthographic(
camera=(3.34740087899027,5.87165852641964,-7.90818499050179),
up=(0.00518200106558389,-0.0019140184130806,0.000772340176956399),
target=(5.23886489744996e-16,-1.76724954115137e-16,-3.53449908230274e-16),
zoom=1);

// Les vecteurs de base
triple vvEx=(1,0,0),vvEy=(0,1,0),vvEz=(0,0,1);
// L'origine du repère
triple pO=(0,0,0);
// Les trous sources
triple pS1=pO+(1,0,0),pS2=pO+(-1,0,0);
// Le centre de l'écran d'observation
triple pE=pO+(0,0,5);
// Le plan des sources
path3 plSource=plane(vvEx,vvEy,pO);
// Le plan de l'écran
path3 plEcran=plane(vvEx,vvEy,pE);
// L'axe source - écran
draw(pO--pE);
// Plan des sources
draw(surface(plSource),paleblue+opacity(.5),blue);
// Plan de l'écran
draw(surface(plEcran),palered+opacity(.5),red);


Merci d'avance
Christophe

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 17:53
par GMaths
Une demande pas évidente...
... d'autant plus pour un prof de maths qui n'a plus fait d'optique depuis 20ans : il y a moyen d'avoir des précisions sur les hyperboloïdes en questions ?

à deux nappes, je présume.

sur la base de l'équation suivante,

$$\ds\frac{x^2+y^2^}{a^2}=\frac{z^2^}{c^2}-1$$

avec le code suivant :
Code: Tout sélectionner
size(200);
import solids;

currentprojection=perspective(8,8,8);

void hyperboloide_deuxnappes(real hauteur=2,
                             real a=1,
                      real c=1,
                      bool deuxnappes=true,
                      pen couleur=gray+opacity(.7)){
  real zmin=c, zmax=c+hauteur;
  revolution nappe1=revolution(new real(real z) {return a*sqrt((z/c)^2-1);},
                                   zmin,zmax,20,operator..,X);
  draw(surface(nappe1),couleur);
  draw(nappe1,6,couleur,longitudinalpen=nullpen);
  if(deuxnappes){
  revolution nappe2=revolution(new real(real z) {return a*sqrt((z/c)^2-1);},
                                   -zmax,-zmin,20,operator..,X);
  draw(surface(nappe2),couleur);
  draw(nappe2,6,couleur,longitudinalpen=nullpen);
  }
}

hyperboloide_deuxnappes(a=1,c=1);
hyperboloide_deuxnappes(a=1,c=2,lightred+opacity(.6));
hyperboloide_deuxnappes(a=1,c=3,deuxnappes=false,lightblue+opacity(.5));
hyperboloide_deuxnappes(a=1.5,c=3,lightgreen+opacity(.4));


j'obtiens cela :

hyperboloide_deuxnappes.png



Je ne me suis soucié pour l'instant de que créer une fonction qui permettrait de construire facilement une ou deux nappes d'un hyperboloïde à deux nappes !!

La syntaxe de la fonction est
hyperboloide_deuxnappes(hauteur,a,c,deuxnappes,couleur)

  • a et c sont les paramètres de l'équation citée.
  • deuxnappes est un booléen par défaut à true : en mettant false, on n'obtient qu'une seule nappe.
  • couleur permet de choisir la couleur, par défaut grise.
Sur la figure ci-dessus, des exemples :
Code: Tout sélectionner
hyperboloide_deuxnappes(a=1,c=1);
hyperboloide_deuxnappes(a=1,c=2,lightred+opacity(.6));
hyperboloide_deuxnappes(a=1,c=3,deuxnappes=false,lightblue+opacity(.5));
hyperboloide_deuxnappes(a=1.5,c=3,lightgreen+opacity(.4));

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 18:24
par oleanet
Bonjour,

Je n'ai pas de solution en Asymptote à proposer, mais j'ai transmis le problème à l'auteur de TeXgraph qui m'a proposé ce qui suit. Il a en fait calculé les équations des hyperboloîdes et remplacer z par sa valeur pour ne dessiner que des courbes paramètrées dans l'espace. Voici son code, cela peut aider peut-être:

Code: Tout sélectionner
[view(-9,9,-2,8), Marges(0,0,0,0),size(10),
background(full,lightgray), view3D(-5,5,-5,5,-5,6),
d:=1, Ze:=4.5, S1:=M(d,0,0), S2:=M(-d,0,0), ecran:=[M(0,0,Ze),vecK], lambda:=0.2,
Build3D(
        bdCone(S1,Ze*vecK,Ze,[color:=yellow,hollow:=0,contrast:=0.125, opacity:=0.3]),
        bdCone(S2,Ze*vecK,Ze,[color:=yellow,hollow:=0,contrast:=0.125, opacity:=0.3]),
        bdPlan(ecran,[color:=pink, opacity:=0.5, scale:=1.15, border:=1]),
        view3D(-7,7,-7,7,-1,7), bdAxes(M(0,0,Ze), [arrows:=1,labels:=1]), view3D(-5,5,-5,5,-5,6),
        bdDroite([M(0,0,Ze),vecJ], [color:=white,tube:=1]), {raie centrale}
        for k from 1 to 6 do
            alpha:=sqr(k*lambda),
            c:=(d^2*(1+Ze^2)-alpha/4), a:=sqrt(alpha*c/(4*d^2-alpha)), b:=sqrt(c),
            bdCurve( [ch(t)*a+i*sh(t)*b,Ze], [t:=[-1.5,1.5],color:=white,clip:=1,tube:=1]),
           sep3D,
           bdCurve( [-ch(t)*a+i*sh(t)*b,Ze], [t:=[-1.5,1.5],color:=white,clip:=1,tube:=1]),
           sep3D
        od,
        bdLabel(S1, "$S_1$", [labelpos:=[0.25,-i],LabelStyle:=top]),
        bdLabel(S2, "$S_2$", [labelpos:=[0.25,-i],LabelStyle:=top]),
        bdDot([S1,S2], [color:=blue])
        ),
Display3D()]


Image

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 18:25
par cjorssen
Merci de ta réponse.

GMaths a écrit:Une demande pas évidente...
... d'autant plus pour un prof de maths qui n'a plus fait d'optique depuis 20ans : il y a moyen d'avoir des précisions sur les hyperboloïdes en questions ?


On peut voir un petit rappel de la théorie à partir de la page 11 de ce document http://www.edu.upmc.fr/physique/phys325/IMG/pdf_Ch10_Additionner_Ondes.pdf. En tout cas, ce que tu as fait a l'air très convainquant. Existe-t-il un moyen de déterminer l'intersection d'une surface avec un plan ?

Quelques petites questions néanmoins...

Code: Tout sélectionner
revolution nappe1=revolution(new real(real z) {return a*sqrt((z/c)^2-1);},
                                   zmin,zmax,20,operator..,X);


Pourquoi "new" dans "new real" ? Quelle est la syntaxe de "revolution" (en particulier qu'est-ce que cet "operator..") ? Où trouver la doc de ces structure ?

Que fait
Code: Tout sélectionner
draw(nappe1,6,couleur,longitudinalpen=nullpen);


Merci d'avance

--
Christophe

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 18:30
par cjorssen
oleanet a écrit:Je n'ai pas de solution en Asymptote à proposer, mais j'ai transmis le problème à l'auteur de TeXgraph qui m'a proposé ce qui suit. Il a en fait calculé les équations des hyperboloîdes et remplacer z par sa valeur pour ne dessiner que des courbes paramètrées dans l'espace. Voici son code, cela peut aider peut-être:


Merci de ta réponse. Effectivement, ça peut aider. Mais je cherche une solution asymptote. En tout cas, le résultat est joli, même si on ne voit pas les hyperboloïdes.

--
Christophe

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 20:20
par OG
Tout d'abord très jolie figure de Gaëtan.

cjorssen a écrit:Quelques petites questions néanmoins...
Code: Tout sélectionner
 revolution nappe1=revolution(new real(real z) {return a*sqrt((z/c)^2-1);},
                                       zmin,zmax,20,operator..,X);



Pourquoi "new" dans "new real" ? Quelle est la syntaxe de "revolution" (en particulier qu'est-ce que cet "operator..") ? Où trouver la doc de ces structure ?


le code est équivalent à définir une fonction dans l'entrée. Cela évite d'écrire
Code: Tout sélectionner
 real f(real z) {return a*sqrt((z/c)^2-1);}
revolution nappe1=revolution(f,zmin,zmax,20,operator ..,X);

Comme tout est fait par morceaux, le operator .. signifie que la courbe (de révolution) qui reliera les points
sera crée via l'operator .. : donc courbe lisse. Si tu mets operator --, c'est par des segments.

Pour l'intersection, c'est non. Ce n'est pas (encore) implémentée dans asymptote. Tu peux faire surface/path
mais pas surface/surface, ou encore calculer à la main, ce qui est possible ici, tout dépend du degré d'automatisation
que tu désires.

La commande draw trace la surface de révolution. Le 16 signifie le nombre de morceaux, la discrétisation.

O.G.

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 20:37
par OG
Re

C'est succinct : http://asymptote.sourceforge.net/doc/solids.html#solids
il faut aller voir les exemples de la distribution et surtout ceux de Gaëtan et Philippe.

Une autre solution mais qui sera limitée (question présentation surtout au cas canonique) est de définir
les deux fonctions $\pm \sqrt{(x^2+y^2)/a^2+1}$ et de tracer les surfaces associées.

O.G.

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 21:02
par GMaths
Je crois qu'Olivier a répondu à toutes tes questions.

A mon tour d'en poser une.
cjorssen a écrit:On peut voir un petit rappel de la théorie à partir de la page 11 de ce document http://www.edu.upmc.fr/physique/phys325/IMG/pdf_Ch10_Additionner_Ondes.pdf.

J'ai lu notamment (page 12 (ou 106) - à droite de la figure avec les hyperboloïdes) que :
les foyers sont les deux points sources

... mais j'ai du mal à comprendre : nous parlons des hyperboloïdes qui ont tous... les deux mêmes foyers qui sont les trous de Young dans la plaque ??
Mon problème est de comprendre comment doivent être les hyperboloïdes vis à vis des plaques que tu as dessinées ; j'ai compris qu'apparemment les foyers doivent rester à des positions fixes mais il reste à déterminer leur position vis à vis des plaques... à déterminer comment cela se traduit sur les constantes a et c de ma fonction... sous réserve que cela soit une bonne façon de les définir dans le contexte.

Je me pose des autres questions : peut-on faire une figure avec les bonnes proportions ? quelles devraient être les dimensions réelles des plaques de d'expérience, la distance qui les sépare, la ou les valeurs de $\lambda$, etc...
On ne va pas savoir faire (pour l'instant) l'intersection d'un hyperboloïde avec un plan... mais on doit pouvoir déterminer les équations de l'intersection pour la dessiner sur le plan, comme ce qui a été proposé avec texgraph.
Le tout étant d'avoir toutes les données utiles.

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 21:44
par GMaths
Je complète mon message précédent.

Je viens de regarder à nouveau la figure qui a été proposée par le brillantissime Patrick Fradin avec texgraph.
Image
Comment seraient les hyperboloïdes par rapport à cette figure ? Tous de foyers S1 et S2 et d'axe de révolution (S1S2) parallèle à l'axe (x'x) ?

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 22:19
par oleanet
GMaths a écrit:Comment seraient les hyperboloïdes par rapport à cette figure ? Tous de foyers S1 et S2 et d'axe de révolution (S1S2) parallèle à l'axe (x'x) ?


Quelque chose comme ça:

Image

Pour limiter le nombre de facettes, j'ai coupé les hyperboloïdes sauf la première nappe du premier.

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 22:27
par cjorssen
GMaths a écrit:Je crois qu'Olivier a répondu à toutes tes questions.

En effet. Merci Olivier.

GMaths a écrit:A mon tour d'en poser une.
cjorssen a écrit:On peut voir un petit rappel de la théorie à partir de la page 11 de ce document http://www.edu.upmc.fr/physique/phys325/IMG/pdf_Ch10_Additionner_Ondes.pdf.

J'ai lu notamment (page 12 (ou 106) - à droite de la figure avec les hyperboloïdes) que :
les foyers sont les deux points sources

... mais j'ai du mal à comprendre : nous parlons des hyperboloïdes qui ont tous... les deux mêmes foyers qui sont les trous de Young dans la plaque ??


Oui.

GMaths a écrit:Mon problème est de comprendre comment doivent être les hyperboloïdes vis à vis des plaques que tu as dessinées ; j'ai compris qu'apparemment les foyers doivent rester à des positions fixes mais il reste à déterminer leur position vis à vis des plaques...


Ce sont les deux points pS1 et pS2 de mon "code" du début. Après, il y a schématiquement deux façons de regarder les interférences : soit dans un plan parallèle au plan des sources (cas des trous d'Young), soit dans un plan perpendiculaire à S1S2 (cas par exemple du Michelson en lame d'air).

GMaths a écrit: à déterminer comment cela se traduit sur les constantes a et c de ma fonction... sous réserve que cela soit une bonne façon de les définir dans le contexte.


C'est vrai que ce sont de bonnes questions :-)

GMaths a écrit:Je me pose des autres questions : peut-on faire une figure avec les bonnes proportions ? quelles devraient être les dimensions réelles des plaques de d'expérience, la distance qui les sépare, la ou les valeurs de $\lambda$, etc...


Typiquement, (d'après Berty, expériences d'optique), la distance qui sépare les points sources est de l'ordre du dixième de millimètre, la distance séparant le plan des sources de l'écran d'observation est de l'ordre du mètre, la longueur d'onde est dans le visible (typiquement 500nm).

GMaths a écrit:On ne va pas savoir faire (pour l'instant) l'intersection d'un hyperboloïde avec un plan... mais on doit pouvoir déterminer les équations de l'intersection pour la dessiner sur le plan, comme ce qui a été proposé avec texgraph.
Le tout étant d'avoir toutes les données utiles.


J'espère t'avoir donné assez de renseignement. Dommage que cette intersection ne soit pas possible. Ça se programme à quel niveau : sous la forme d'un .asy comme third.asy ou bien au niveau du noyau d'asymptote ?

Encore merci pour toutes ces indications.
--
Christophe

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 22:28
par cjorssen
oleanet a écrit:
GMaths a écrit:Comment seraient les hyperboloïdes par rapport à cette figure ? Tous de foyers S1 et S2 et d'axe de révolution (S1S2) parallèle à l'axe (x'x) ?


Quelque chose comme ça:

Image

Pour limiter le nombre de facettes, j'ai coupé les hyperboloïdes sauf la première nappe du premier.


Oui tout à fait.

--
Christophe

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Dimanche 10 Janvier 2010, 22:36
par projetmbc
A quand une version Asymptote ? Ce serait sympa...

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Lundi 11 Janvier 2010, 01:33
par GMaths
projetmbc a écrit:A quand une version Asymptote ? Ce serait sympa...

Maintenant.

Je n'ai pas trop l'habitude des figures dans l'espace... donc il y a peut-être moyen de faire mieux.

hyperboloide_deux_nappes.png


Image

Image

Image

Code asy - Version Pdf, où on peut faire tourner la figure avec AcrobatReader (attention 3,04 Mo et oui... de la 3D embarquée, c'est lourd).

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Lundi 11 Janvier 2010, 08:01
par oleanet
C'est très beau!

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Lundi 11 Janvier 2010, 08:14
par GMaths
oleanet a écrit:C'est très beau!
Mouais... il resterait à faire plus sobre au niveau des couleurs, dans le style de ce que tu as fait, pour que cela fasse plus sérieux... car pg m'a fait réaliser que je traversais une période "kitch". :mrgreen:

J'ai modifié les exemples... car j'avais oublié le plan du milieu... et j'ai modifié quelques petites choses, en exploitant des symétries. (asy et pdf à jour)

Je précise à ceux qui testeront... que je suis toujours "limite mémoire" (je n'ai pas pu mettre autant de surfaces que je voulais) avec un pc qui est pourtant plutôt costaud.
Donc ne soyez pas surpris, ceux qui ont un pc qui date un peu, que cela coince au niveau mémoire : cela passera en enlevant une des valeurs ici :
Code: Tout sélectionner
real[] c={.1,.15,.2,.25}; int n=c.length;


Je risque de revoir cette partie... pour que l'on ait à faire le choix du nombre de surfaces et non des surfaces.

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Lundi 11 Janvier 2010, 09:10
par GMaths
Modification sensible du code : http://docs.gmaths.net/tempo/hyperboloide_deux_nappes_3.asy

  • Changement de notations
  • Changement de couleurs
  • Suppression d'un axe
  • Ajout d'un plan

Nouveau Pdf : http://docs.gmaths.net/tempo/hyperboloide_deux_nappes_3.pdf (2,25Mo)

Deux aperçus :

Image

Image

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Lundi 11 Janvier 2010, 09:15
par OG
Bonjour

Personnellement je dormais quand Gaëtan a proposé son code.
J'ajoute que j'adore les couleurs !
Pour la mémoire as-tu essayé de diminuer 15 dans le code
Code: Tout sélectionner
 surface s=surface(f,(-vx,-vy),(vx,vy),15,15,Spline);

mais tout en gardant une bonne qualité. Tes surfaces ne sont pas trop irrégulières.

cjorssen a écrit:J'espère t'avoir donné assez de renseignement. Dommage que cette intersection ne soit pas possible. Ça se programme à quel niveau : sous la forme d'un .asy comme third.asy ou bien au niveau du noyau d'asymptote ?

Le choix 3D est celui de faire des surfaces par carreaux de Bézier bicubiques. C'est un choix ambitieux par rapport
à une gestion facette. D'un côté tu as des surfaces bien lisses ($C^2$ a priori) mais d'un autre côté tu as des algorithmes
beaucoup plus compliqués. Pour l'intersection entre deux carreaux de Bézier, tu peux avoir plusieurs composantes
connexes, la résolution ne se fait que numériquement (qui de deux surfaces tangentes généralement les méthodes numériques
n'aiment pas trop les points doubles, etc.. (par exemple dans tikz côté intersection il y a des progrès à faire pour
les chemins tangents,et la gestion des chemins confondus)), etc... Bref de quoi t'amuser.
Toute volontaire est bienvenu. Ce n'est pas du tout mon domaine mais j'ai des références...

O.G.

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Lundi 11 Janvier 2010, 09:22
par projetmbc
OG a écrit:Personnellement je dormais quand Gaëtan a proposé son code.
J'ajoute que j'adore les couleurs !

+1 , mais les couleurs pour le papier, ce n'est pas top, surtout quand il faut faire des photocopies...

OG a écrit:Toute volontaire est bienvenu. Ce n'est pas du tout mon domaine mais j'ai des références...

Tu connais déjà le souci, c'est pas mal... J'ai déjà eu des soucis de mémoire avec Asymptote avec des dessins "simples" sur mon vieux PC de 4 ans sous Windows (un peu n'importe quoi cette société de consommation qui fait qu'un ordi de 4 ans est trop vieux mais ceci est un autre débat).

J'allais oublier. Merci GMaths. :mrgreen:

Re: [Asymptote] Interférences à deux ondes, hyperboloïde

MessagePosté: Lundi 11 Janvier 2010, 09:30
par oleanet
OG a écrit: C'est un choix ambitieux par rapport
à une gestion facette. O.G.


Et oui! Les intersections de facettes c'est tranquille à côté, c'est sur! Mais ça a ses limites aussi. Je précise que dans la figure que j'ai proposée les facettes ne sont même pas lissées, j'ai simplement diminué le contrast.


GMaths a écrit: Mouais... il resterait à faire plus sobre au niveau des couleurs, dans le style de ce que tu as fait, pour que cela fasse plus sérieux... car pg m'a fait réaliser que je traversais une période "kitch". :mrgreen:


A cause de bclogo? Bah! Je l'ai vu ton document et je le trouve très bien, ce n'est pas parce que pg est calé en programmation TeX que ses goûts artistiques font référence, non? :lol: