Interférences à deux ondes, hyperboloïde

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
cjorssen

Interférences à deux ondes, hyperboloïde

Message non lu 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
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

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

Message non lu 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));
oleanet
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 257
Inscription : dimanche 24 décembre 2006, 15:17

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

Message non lu 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
cjorssen

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

Message non lu 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 ... _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
cjorssen

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

Message non lu 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
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

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

Message non lu 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.
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

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

Message non lu 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.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

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

Message non lu 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 ... _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.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

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

Message non lu 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) ?
oleanet
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 257
Inscription : dimanche 24 décembre 2006, 15:17

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

Message non lu 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.
cjorssen

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

Message non lu 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 ... _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
cjorssen

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

Message non lu 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
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2236
Inscription : samedi 29 décembre 2007, 00:58

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

Message non lu par projetmbc »

A quand une version Asymptote ? Ce serait sympa...
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

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

Message non lu 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).
Dernière modification par GMaths le lundi 11 janvier 2010, 09:05, modifié 2 fois.
oleanet
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 257
Inscription : dimanche 24 décembre 2006, 15:17

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

Message non lu par oleanet »

C'est très beau!
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

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

Message non lu 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.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

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

Message non lu par GMaths »

Modification sensible du code : http://docs.gmaths.net/tempo/hyperboloi ... ppes_3.asy
  • Changement de notations
  • Changement de couleurs
  • Suppression d'un axe
  • Ajout d'un plan
Nouveau Pdf : http://docs.gmaths.net/tempo/hyperboloi ... ppes_3.pdf (2,25Mo)

Deux aperçus :

Image

Image
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

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

Message non lu 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.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2236
Inscription : samedi 29 décembre 2007, 00:58

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

Message non lu 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:
oleanet
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 257
Inscription : dimanche 24 décembre 2006, 15:17

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

Message non lu 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:
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message