Скетчер Ограничение преломления (Закон Снеллиуса)
|
|
| Расположение в меню |
|---|
| Эскиз → Ограничения эскиза → Ограничение преломления (Закон Снеллиуса) |
| Верстаки |
| Скетчер |
| Быстрые клавиши |
| K W |
| Представлено в версии |
| 0.15 |
| См. также |
| Нет |
Описание
Инструмент Ограничение преломления (Закон Снеллиуса) ограничивает две линии, чтобы они следовали закону преломления света, когда он проникает через границу раздела двух материалов с разными показателями преломления. Смотри Закон Снеллиуса (англ.), (рус.)
Закон Снеллиуса
Применение
Последовательность щелчков обозначена жёлтыми стрелками с цифрами, n1 и n2 показывают, где находятся показатели преломления
- Подготовьте две линии, которые будут представлять луч света, и ребро, которое будет служить границей раздела. Линии должны находиться по разные стороны от границы раздела. В качестве границы раздела могут выступать Линия, Дуга, Окружность или круговым ребром.
- Выберите конечную точку первой линии, конечную точку второй линии и ребро раздела. Обратите внимание на порядок выбора конечных точек.
- Есть несколько способов вызвать инструмент:
- Откроется диалоговое окно Отношение показателей преломления.
- Введите Отношение n2/n1. Где n2 - среда, в которой находится вторая выбранная линия, а n1 - среда в которой находится первая линия.
- Добавлено ограничение по закону Снеллиуса. При необходимости конечные точки делаются совпадающими и ограничиваются на поверхности раздела. Эти дополнительные ограничения называются вспомогательные ограничения.
Примечания
- Фактическое ограничение закона Снеллиуса приводит к выполнению уравнения n1*sin(theta1) = n2*sin(theta2). Для этого необходимо, чтобы концы линий совпадали и находились на границе раздела с помощью других ограничений, иначе поведение будет неопределённым. Необходимые вспомогательные ограничения будут добавлены автоматически на основе текущих координат элементов.
- В Python вспомогательные ограничения должны быть добавлены вручную (смотри Написание скриптов).
- Эти вспомогательные ограничения можно временно удалять, а конечные точки перетаскивать друг относительно друга, что может быть полезно, если нужно построить отражённый луч или лучи двойного преломления.
- В отличие от реальности, показатели преломления связаны с лучами света, а не со сторонами границы раздела сред. Это полезно для эмуляции двухлучевого преломления, построения путей с разными длинами волн из-за преломления и легкого построения угла начала полного внутреннего отражения.
- Оба луча могут находиться по одну сторону границы раздела, удовлетворяя уравнению ограничения. Это физическая бессмыслица, если только отношение n2/n1 не равно 1,0, в этом случае ограничение эмулирует отражение.
- Дуги окружности и эллипса также принимаются за лучи. Но это тоже физическая бессмыслица.
Написание скриптов
Ограничения можно создавать с помощью макросов и в консоли Python, используя следующие команды:
Sketch.addConstraint(Sketcher.Constraint('SnellsLaw',line1,pointpos1,line2,pointpos2,interface,n2byn1))
где:
Sketch- объект эскиза.line1иpointpos1- два целых числа, определяющие конечную точку линии в среде с показателем преломления n1.line1- это индекс линии в эскизе (значение, возвращаемое Sketch.addGeometry), аpointpos1должен быть равен 1 для начальной точки и 2 для конечной.line2иpointpos2- это индексы, определяющие конечную точку второй линии (в среде n2)interface- индекс, указывающий на линию, обозначающую позицию границы между средой n1 и средой n2n2byn1- число с плавающей точкой, равное отношению показателей преломления n2/n1
На странице Написание скриптов в Скетчер объясняются значения, которые можно использовать для line1, pointpos1, line2, pointpos2 и interface, а также приводятся дополнительные примеры создания ограничений из скриптов Python.
Пример:
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()
- Основные: Создать эскиз, Редактировать эскиз, Прикрепите эскиз, Переориентировать эскиз, Проверить эскиз, Объединить эскизы, Отразить эскиз зеркально, Покинуть эскиз, Просмотр эскиза, Просмотр сечения, Переключить сетку, Переключить привязку, Настройка порядка прорисовки, Остановить операцию
- Геометрия Скетчера: Создать точку, Создать линию по точкам (полилинию), Создать отрезок, Создать дугу от центра, Создать дугу по 3 точкам, Создать эллиптическую дугу, Создать гиперболическую дугу, Создать параболическую дугу, Создать круг по центру, Создать круг по 3 точкам, Создать эллипс от центра, Создать эллипс по 3 точкам, Прямоугольник, Центрированный прямоугольник, Скруглённый прямоугольник, Треугольник, Квадрат, Пятиугольник, Шестиугольник, Семиугольник, Восьмиугольник, Правильный многоугольник, Создать паз, Создать дуговой слот, B-сплайн по контрольным точкам, Периодический B-сплайн по контрольным точкам, B-сплайн по узлам, Периодический B-сплайн по узлам, Переключить вспомогательную геометрию
- Ограничения в Скетчере:
- Размерные ограничения: Размер, Ограничение расстояния по горизонтали, Ограничение расстояния по вертикали, Ограничение Расстояния, Ограничение радиуса/диаметра автоматически, Ограничение Радиуса, Ограничение Диаметра, Ограничение Угла, Ограничение положения
- Геометрические ограничения: Ограничение наложения точек, Ограничение Совпадения точек, Ограничение Точки на объекте, Ограничить горизонтальность/вертикальность, Ограничить горизонталь, Ограничить вертикаль, Ограничение Параллельности, Ограничение перпендикулярности, Ограничить касательную или коллинеарность, Ограничение эквивалентностью, Ограничить симметричность, Ограничение перемещения
- Другие ограничения: Ограничение преломления (Закон Снеллиуса)
- Инструменты ограничений: Переключить ограничения в построительные/основные, Вкл/выкл ограничение
- Инструменты Скетчера: Создать скругление, Создать Фаску, Обрезать ребро, Разделить ребро, Продлить ребро, Внешняя геометрия, Структурная копия, Выбрать начало координат, Выбрать горизонтальную ось, Выбрать вертикальную ось, Переместить / линейный массив, Повернуть / круговой массив, Масштабировать, Сместить геометрию, Симметрия, Удалить выравнивание по осям, Удалить всю геометрию, Удалить все ограничения
- Инструменты для B-сплайн Скетчера: Преобразовать геометрию в B-сплайн, Увеличить степень B-сплайна, Уменьшить степень B-сплайна, Увеличить кратность узла, Уменьшить кратность узла, Вставить узел, Объединить кривые
- Визуализация в Эскизе: Выбрать недостаточно ограниченные элементы, Выделить наложенные ограничения, Выделить ограничиваемую геометрию, Выделить избыточные ограничения, Выделить конфликтующие ограничения, Показать/скрыть вспомогательную окружность для дуг, Показать/Скрыть степень B-сплайна, Показать/Скрыть полигон управления B-сплайном, Показать/скрыть гребень кривизны B-сплайна, Показать/скрыть кратность узлов В-сплайна, Показать/скрыть вес контрольных точек B-сплайна, Показать/скрыть внутреннюю геометрию, Переключить виртуальное пространство
- Дополнительно: Диалоговое окно Скетчера, Настройки, Написание скриптов в Скетчер
- Начинающим
- Установка: Загрузка, Windows, Linux, Mac, Дополнительных компонентов, Docker, AppImage, Ubuntu Snap
- Базовая: О FreeCAD, Интерфейс, Навигация мыши, Методы выделения, Имя объекта, Настройки, Верстаки, Структура документа, Свойства, Помоги FreeCAD, Пожертвования
- Помощь: Учебники, Видео учебники
- Верстаки: Std Base, Arch, Assembly, CAM, Draft, FEM, Inspection, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test Framework