Sketcher ConstrainSnellsLaw/pl: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
 
(8 intermediate revisions by 2 users not shown)
Line 2: Line 2:


{{Docnav/pl
{{Docnav/pl
|[[Sketcher_ConstrainBlock/pl|Wiązanie zablokowania]]
|[[Sketcher_ConstrainLock/pl|Blokada wiązania]]
|[[Sketcher_ToggleDrivingConstraint/pl|Przelacz kontrole wiazania]]
|[[Sketcher_ToggleDrivingConstraint/pl|Przelacz kontrole wiazania]]
|[[Sketcher_Workbench/pl|środowisko pracy Szkicownik]]
|[[Sketcher_Workbench/pl|środowisko pracy Szkicownik]]
|IconL=Sketcher_ConstrainLock.svg
|IconL=Sketcher_ConstrainBlock.svg
|IconR=Sketcher_ToggleDrivingConstraint.svg
|IconR=Sketcher_ToggleDrivingConstraint.svg
|IconC=Workbench_Sketcher.svg
|IconC=Workbench_Sketcher.svg
Line 22: Line 22:
==Opis==
==Opis==


Narzędzie [[Image:Sketcher_ConstrainSnellsLaw.svg|24px]] '''Wiązanie prawo Snell'a''' wiąże dwie linie tak, aby były zgodne z prawem załamania światła, gdy przenika ono przez interfejs, w którym spotykają się dwa materiały o różnych współczynnikach załamania. Zobacz [http://en.wikipedia.org/wiki/Snell%27s_law Prawo Snella].
<div class="mw-translate-fuzzy">
Powoduje związanie dwóch linii do przestrzegania prawa załamania światła, które przenika przez powierzchnię, gdzie spotykają się dwa materiały o różnych współczynnikach załamania. Zobacz [http://en.wikipedia.org/wiki/Snell%27s_law Prawo Snell'a] na Wikipedii, aby uzyskać więcej informacji.
</div>


[[Image:Snells_law2_witheq.svg|x400px]]
[[Image:Snells_law2_witheq.svg|x400px]]
Line 33: Line 31:


[[Image:Sketcher_SnellsLaw_Example1.png|500px]]
[[Image:Sketcher_SnellsLaw_Example1.png|500px]]
{{Caption|Sekwencja kliknięć jest oznaczona żółtymi strzałkami z liczbami, n1 i n2 pokazują, gdzie znajdują się współczynniki załamania.}}
<div class="mw-translate-fuzzy">
{{Caption|Sekwencja kliknięć jest oznaczona żółtymi strzałkami z numerami. n1, n2 to tylko etykiety, wskazujące gdzie znajdują się wskaźniki załamania.}}
</div>


# Przygotuj dwie linie reprezentujące wiązkę światła oraz krawędź pełniącą rolę interfejsu. Linie powinny znajdować się po różnych stronach interfejsu. Interfejsem może być [[Sketcher_CreateLine/pl|linia]], [[Sketcher_CreateArc/pl|łuk]], [[Sketcher_CreateCircle/pl|okrąg]], [[Sketcher_CompCreateConic/pl|stożek]].
<div class="mw-translate-fuzzy">
# Wybierz punkt końcowy pierwszej linii, punkt końcowy drugiej linii i krawędź interfejsu. Zwróć uwagę na kolejność wyboru punktów końcowych.
* Będziesz potrzebował dwóch linii, które mają podążać za promieniem światła, oraz krzywej, która będzie działać jako powierzchnia kontaktowa. Linie te powinny znajdować się po różnych stronach tej powierzchni.
# Istnieje kilka sposobów wywołania narzędzia:
* Wybierz punkt końcowy jednej linii, punkt końcowy drugiej linii i krawędź powierzchni kontaktowej. Powierzchnia kontaktu może być [[Sketcher_CreateLine|linią]], [[Sketcher_CompCreateArc|łukiem]], [[Sketcher_CompCreateCircle|okręgiem]] lub [[Sketcher_CompCreateConic|stożkiem]]. Zwróć uwagę na kolejność, w jakiej wybrałeś punkty końcowe.
#* Wybierz z menu {{MenuCommand|Szkic → Wiązania szkicownika → [[Image:Sketcher_ConstrainSnellsLaw.svg|16px]] Wiązanie prawo Snell'a}}.
* Wywołaj wiązanie. Pojawi się okno dialogowe z zapytaniem o stosunek indeksów załamania n2/n1. n2 odpowiada środkowi, w którym znajduje się druga wybrana linia punktu końcowego, n1 jest dla pierwszej linii.
#* Użyj skrótu klawiaturowego: {{KEY|K}}, a następnie {{KEY|W}}.
* Punkty końcowe będą zbieżne ''(jeśli trzeba)'', zostaną związane z powierzchnią kontaktu ''(jeśli trzeba)'', a prawo Snell'a zostanie związane.
# Zostanie otwarte okno dialogowe {{MenuCommand|Współczynnik załamania światła}}.
</div>
# Wprowadź {{MenuCommand|Stosunek n2/n1:}}. Gdzie {{MenuCommand|n2}} jest dla ośrodka, w którym znajduje się druga wybrana linia, a {{MenuCommand|n1}} jest dla ośrodka pierwszej linii.
# Dodawane jest wiązanie zgodne z prawem Snella. Jeśli jest to wymagane, punkty końcowe są [[Sketcher_ConstrainCoincident/pl|zbieżne]] i związane [[Sketcher_ConstrainPointOnObject/pl|na interfejsie]]. Te dodatkowe więzy są nazywane [[Sketcher_helper_constraint/pl|wiązaniami pomocniczymi]].


==Notes==
<span id="Notes"></span>
==Uwagi==


* Rzeczywiste wiązanie prawna Snell'a narzuca równanie prawa jawnego n1*sin(theta1) = n2*sin(theta2). Wymaga, aby końce linii były zbieżne i umieszczone bezpośrednio na powierzchni styku różnych wiązań, w przeciwnym razie zachowanie jest nieokreślone. Niezbędne wiązania pomocnicze są dodawane automatycznie w oparciu o bieżące współrzędne elementów.
<div class="mw-translate-fuzzy">
* Procedura Pythona nie dodaje wiązań pomocniczych. Muszą one być dodane ręcznie przez skrypt ''(zobacz przykład w sekcji [[#Tworzenie_skryptów|Tworzenie skryptów]])''.
* Rzeczywiste wiązanie prawna Snell'a narzuca równanie prawa jawnego n1*sin(theta1) = n2*sin(theta2). Wymaga, aby końce linii były zbieżne i umieszczone bezpośrednio na powierzchni styku różnych wiązań. Niezbędne wiązania pomocnicze są dodawane automatycznie w oparciu o bieżące współrzędne elementów.
* Procedura Pythona nie dodaje wiązań pomocniczych. Muszą one być dodane ręcznie przez skrypt ''(zobacz przykład w sekcji Tworzenie skryptów)''.
* Te wiązania pomocnicze mogą być tymczasowo usunięte, a punkty końcowe przeciągnięte, co może być użyteczne w przypadku, gdy chcemy skonstruować odbity promień lub promienie dwójłomne.
* Te wiązania pomocnicze mogą być tymczasowo usunięte, a punkty końcowe przeciągnięte, co może być użyteczne w przypadku, gdy chcemy skonstruować odbity promień lub promienie dwójłomne.
* W przeciwieństwie do rzeczywistości, współczynniki załamania są powiązane z promieniami światła, ale nie zgodnie z krawędzią granicy. Jest to użyteczne w celu emulowania dwupłaszczyzn, konstruowania ścieżek o różnych długościach fal spowodowanych załamaniem i łatwego konstruowania kąta początku całkowitego wewnętrznego odbicia.
* W przeciwieństwie do rzeczywistości, współczynniki załamania są powiązane z promieniami światła, ale nie zgodnie z krawędzią granicy. Jest to użyteczne w celu emulowania dwupłaszczyzn, konstruowania ścieżek o różnych długościach fal spowodowanych załamaniem i łatwego konstruowania kąta początku całkowitego wewnętrznego odbicia.
* Oba promienie mogą znajdować się po tej samej stronie powierzchni styku, spełniając równanie wiązania. Jest to fizyczny nonsens, chyba że stosunek n2/n1 wynosi 1,0, w którym to przypadku ograniczenie emuluje odbicie.
* Oba promienie mogą znajdować się po tej samej stronie powierzchni styku, spełniając równanie wiązania. Jest to fizyczny nonsens, chyba że stosunek n2/n1 wynosi 1,0, w którym to przypadku ograniczenie emuluje odbicie.
* Łuki okręgu i elipsy są również akceptowane jako promienie ''(fizyczny nonsens)''.
* Łuki okręgu i elipsy są również akceptowane jako promienie. Ale to również jest fizyczny nonsens.
</div>


<span id="Scripting"></span>
<span id="Scripting"></span>
Line 99: Line 96:




<div class="mw-translate-fuzzy">
{{Docnav/pl
{{Docnav/pl
|[[Sketcher_ConstrainAngle/pl|Wiązanie kąta]]
|[[Sketcher_ConstrainBlock/pl|Wiązanie zablokowania]]
|[[Sketcher_ToggleDrivingConstraint/pl|Przelacz kontrole wiazania]]
|[[Sketcher_ToggleDrivingConstraint/pl|Przelacz kontrole wiazania]]
|[[Sketcher_Workbench/pl|środowisko pracy Szkicownik]]
|[[Sketcher_Workbench/pl|środowisko pracy Szkicownik]]
|IconL=Sketcher_ConstrainAngle.svg
|IconL=Sketcher_ConstrainBlock.svg
|IconR=Sketcher_ToggleDrivingConstraint.svg
|IconR=Sketcher_ToggleDrivingConstraint.svg
|IconC=Workbench_Sketcher.svg
|IconC=Workbench_Sketcher.svg
}}
}}
</div>


{{Sketcher_Tools_navi{{#translation:}}}}
{{Sketcher_Tools_navi{{#translation:}}}}

Latest revision as of 18:28, 7 May 2024

Szkicownik: Wiązanie prawo Snella

Lokalizacja w menu
Szkic → Wiązania szkicownika → Wiązanie refrakcji (prawo Snell'a)
Środowisko pracy
Szkicownik
Domyślny skrót
K W
Wprowadzono w wersji
0.15
Zobacz także
brak

Opis

Narzędzie Wiązanie prawo Snell'a wiąże dwie linie tak, aby były zgodne z prawem załamania światła, gdy przenika ono przez interfejs, w którym spotykają się dwa materiały o różnych współczynnikach załamania. Zobacz Prawo Snella.

Prawo Snell'a

Użycie

Sekwencja kliknięć jest oznaczona żółtymi strzałkami z liczbami, n1 i n2 pokazują, gdzie znajdują się współczynniki załamania.

  1. Przygotuj dwie linie reprezentujące wiązkę światła oraz krawędź pełniącą rolę interfejsu. Linie powinny znajdować się po różnych stronach interfejsu. Interfejsem może być linia, łuk, okrąg, stożek.
  2. Wybierz punkt końcowy pierwszej linii, punkt końcowy drugiej linii i krawędź interfejsu. Zwróć uwagę na kolejność wyboru punktów końcowych.
  3. Istnieje kilka sposobów wywołania narzędzia:
    • Wybierz z menu Szkic → Wiązania szkicownika → Wiązanie prawo Snell'a.
    • Użyj skrótu klawiaturowego: K, a następnie W.
  4. Zostanie otwarte okno dialogowe Współczynnik załamania światła.
  5. Wprowadź Stosunek n2/n1:. Gdzie n2 jest dla ośrodka, w którym znajduje się druga wybrana linia, a n1 jest dla ośrodka pierwszej linii.
  6. Dodawane jest wiązanie zgodne z prawem Snella. Jeśli jest to wymagane, punkty końcowe są zbieżne i związane na interfejsie. Te dodatkowe więzy są nazywane wiązaniami pomocniczymi.

Uwagi

  • Rzeczywiste wiązanie prawna Snell'a narzuca równanie prawa jawnego n1*sin(theta1) = n2*sin(theta2). Wymaga, aby końce linii były zbieżne i umieszczone bezpośrednio na powierzchni styku różnych wiązań, w przeciwnym razie zachowanie jest nieokreślone. Niezbędne wiązania pomocnicze są dodawane automatycznie w oparciu o bieżące współrzędne elementów.
  • Procedura Pythona nie dodaje wiązań pomocniczych. Muszą one być dodane ręcznie przez skrypt (zobacz przykład w sekcji Tworzenie skryptów).
  • Te wiązania pomocnicze mogą być tymczasowo usunięte, a punkty końcowe przeciągnięte, co może być użyteczne w przypadku, gdy chcemy skonstruować odbity promień lub promienie dwójłomne.
  • W przeciwieństwie do rzeczywistości, współczynniki załamania są powiązane z promieniami światła, ale nie zgodnie z krawędzią granicy. Jest to użyteczne w celu emulowania dwupłaszczyzn, konstruowania ścieżek o różnych długościach fal spowodowanych załamaniem i łatwego konstruowania kąta początku całkowitego wewnętrznego odbicia.
  • Oba promienie mogą znajdować się po tej samej stronie powierzchni styku, spełniając równanie wiązania. Jest to fizyczny nonsens, chyba że stosunek n2/n1 wynosi 1,0, w którym to przypadku ograniczenie emuluje odbicie.
  • Łuki okręgu i elipsy są również akceptowane jako promienie. Ale to również jest fizyczny nonsens.

Tworzenie skryptów

Wiązanie może być utworzone przez makropolecenie i z konsoli Pyton za pomocą następującej funkcji:

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

gdzie:

  • Sketch jest obiektem typu szkic
  • line1 oraz pointpos1 są dwiema liczbami całkowitymi określającymi punkt końcowy linii w środku o współczynniku załamania światła wynoszącym n1. line1 jest indeksem linii w szkicu (wartość zwracana przez Sketch.addGeometry), a pointpos1 powinno wynosić 1 dla punktu początkowego i 2 dla punktu końcowego,
  • line2 oraz pointpos2 to indeksy określające punkt końcowy drugiej linii (w środku „n2”),
  • n2byn1 jest liczbą zmiennoprzecinkową równą stosunkowi współczynników załamania światła n2/n1.

Strona Skrypty szkicownika wyjaśnia wartości, których można użyć dla line1, pointpos1, line2, pointpos2 and interface oraz zawiera dalsze przykłady tworzenia wiązań przy użyciu skryptów języka Python.

Przykład:

import Sketcher
import Part
import FreeCAD

StartPoint = 1
EndPoint = 2

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.LineSegment(App.Vector(-667.331726,244.127090,0),App.Vector(-604.284241,269.275238,0)))
iline2 = f.addGeometry(Part.LineSegment(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()