Constraint SnellsLaw/fr


Constraint SnellsLaw.png Contrainte de réfraction

Emplacement du menu
Sketch → Sketcher Contraintes → Contrainte de réfraction (Loi de Snell)
Ateliers
Sketcher, Conception de Pièces
Raccourci par défaut
Aucun
Voir aussi
Aucun


Description

Contraint deux lignes à suivre la loi de la réfraction de la lumière qui pénètre à travers une interface, où deux matériaux de différents indices de réfraction se rencontrent. Voir [ http://fr.wikipedia.org/wiki/Loi_de_Snell_Descartes Loi de Snell] sur Wikipedia pour plus d'info.

Snell's law


Utilisation

La séquence de clics est indiqué par des flèches jaunes avec des numéros. n1, n2 sont labelisées sur cette photo pour montrer où sont les indices de réfraction

Notez qu'il ya plusieurs puces ajoutées de contraintes auxiliaires (point sur objet, coïncidant), et elles peuvent être supprimées si elles provoquent la redondance, ou ajoutés manuellement si elles n'ont pas été ajoutées automatiquement. Pour la contrainte de la loi actuelle de Snell, les extrémités des lignes doivent coïncider et se trouver sur l'interface, sinon le comportement est indéfini.

En utilisant l'outil de polyligne, il est possible d'accélérer le dessin des rayons de lumière. Dans ce cas, on peut sélectionner deux extrémités coïncidentes par la sélection de la boîte.

Remarques

Script

Les contraintes peuvent être créées à partir de macros et de la console python en utilisant la fonction suivante:

Sketch.addConstraint(Sketcher.Constraint('SnellsLaw',line1,pointpos1,line2,pointpos2,interface,n2byn1)) 

où:

* Sketch </ tt> est un objet d'esquisse
* <Tt> ligne1 </ tt> et <tt> pointpos1 </ tt> sont deux entiers identifiant l'extrémité de la ligne dans le milieu d'indice de réfraction de n1 . <tt> ligne1 </ tt> est l'index de la ligne dans l'esquisse (la valeur retournée par Sketch.addGeometry), et <tt> pointpos1 </ tt> devrait être de 1 pour point de départ et 2 pour le point de fin.
* <Tt> line2 </ tt> et <tt> pointpos2 </ tt> sont les indices spécifiant le point final de la deuxième ligne (dans un milieu n2 )
* <Tt> n2byn1 </ tt> est un nombre à virgule flottante égal au rapport des indices de réfraction n2 / n1

Exemple:

from Sketcher import *
from Part import *
from FreeCAD import *

StartPoint = 1
EndPoint = 2
MiddlePoint = 3

f = App.activeDocument().addObject("Sketcher::SketchObject","Sketch")

# add geometry to the sketch
icir = f.addGeometry(Part.Circle(App.Vector(-547.612366,227.479736,0),App.Vector(0,0,1),68.161979))
iline1 = f.addGeometry(Part.Line(App.Vector(-667.331726,244.127090,0),App.Vector(-604.284241,269.275238,0)))
iline2 = f.addGeometry(Part.Line(App.Vector(-604.284241,269.275238,0),App.Vector(-490.940491,256.878265,0)))
# add constraints
# helper constraints:
f.addConstraint(Sketcher.Constraint('Coincident',iline1,EndPoint,iline2,StartPoint)) 
f.addConstraint(Sketcher.Constraint('PointOnObject',iline1,EndPoint,icir)) 
# the Snell's law:
f.addConstraint(Sketcher.Constraint('SnellsLaw',iline1,EndPoint,iline2,StartPoint,icir,1.47))

App.ActiveDocument.recompute() 

Version

La contrainte a été introduit en FreeCAD v0.15.4387

Online version: "http://www.freecadweb.org/wiki/index.php?title=Constraint_SnellsLaw/fr&oldid=153268"

Navigation menu