OberonCore https://forum.oberoncore.ru/ |
|
Как отобразить линейчатый спектр? https://forum.oberoncore.ru/viewtopic.php?f=35&t=4924 |
Страница 1 из 1 |
Автор: | Андрей Антошков [ Среда, 08 Январь, 2014 15:08 ] |
Заголовок сообщения: | Как отобразить линейчатый спектр? |
Доброго времени суток, уважаемые форумчане. Передо мною стоит следующая задача: реализовать программу для расчета дисперсии призматического спектрографа, а так же путем визуального сравнения полученных спектров определить элементный состав. Так как я практически прослушал курс Ф.В.Ткачева - "Программирование для непрофессионалов", то решил реализовать ее в среде BlackBox. Численный расчет реализовал быстро, тем более что уравнения решаются аналитически, а вот с отображением спектра возникли проблемы. Линейчатый спектр, к примеру ртутной лампы - это набор линий со следующими координатами: 365.0153 нм 404.6563 нм 435.8328 нм 546.0735 нм 578.2 нм Я попытался воспользоваться встроенным модулем Views, но функция DrawRect принимает только целые аргументы в качестве координат, мне же необходима точность до 2 знака как минимум. Если же *100 и переводить в целые числа, то окно, в котором отображены линии получается гораздо больше экрана. Так же я попробовал разобраться в подсистеме DiaPlot, которая может отображать массивы реальных чисел, но она настроена на графическое отображение и все точки соединяются. Попытался разобраться в программе тетриса, но из-за слабых знаний в программировании, не смог разобраться с построением модели. Пожалуйста, подскажите, как мне реализовать поставленную задачу? Какую подсистему изучать целенаправленно и не разбрасываться на другие? |
Автор: | Пётр Кушнир [ Среда, 08 Январь, 2014 15:18 ] |
Заголовок сообщения: | Re: Как отобразить линейчатый спектр? |
Андрей Антошков писал(а): мне же необходима точность до 2 знака как минимум. Но ведь изображение на экране состоит из дискретных элементов (пикселов). Поэтому рисунок всегда будет приближенным по точности.Можно поступить следующим образом. Отобразить нужную часть диапазона на экране в подходящем масштабе. Например 578 - 365 = 213 (нм). Плюс запас с двух сторон, округлим до 250 нм. Если установить масштаб 1 нм = 4 пикселя, то вы сможете на экране шириной 1000 пикселей отобразить полосы спектра в диапазоне 365 .. 578 нм с точностью до 0,25 нм. А если усложнить ваше отображение, то можно будет динамически увеличивать масштаб при просмотре, например, колесом мыши. |
Автор: | Иван Денисов [ Среда, 08 Январь, 2014 16:52 ] |
Заголовок сообщения: | Re: Как отобразить линейчатый спектр? |
Я писал на третьем курсе программу для отображения спектров. Сейчас проведу ревизию и выложу тут думаю, она вам поможет разобраться что к чему и допилите для своих нужд. Также есть программа для отображения фотографий и графики поверх этих риснуков, если объединить эти программы, то возможно совмещать спектры с фотоизображениями и даже как-то автомматизировать процесс сличения линий. Тоже ссылку на нее дам в следующем сообщении. |
Автор: | Евгений Темиргалеев [ Четверг, 09 Январь, 2014 14:58 ] |
Заголовок сообщения: | Re: Как отобразить линейчатый спектр? |
Попробуйте поглядеть примеры в http://www.zinnamturm.eu/downloadsDH.htm#Epse21. Может там уже есть? Цитата: Efficient Programming for Sciences and Engineering in the 21st Century.
This package of software helps novices (physicists) to start programming in Blackbox. It is the result of a would-be project "Efficient Programming for Sciences and Engineering in the 21st Century" which was discussed last summer, and whose first visible result is the Oberon Day 2004. I plan to add more examples there in future. Epse21 uses the services of Ctls, Lib, Babel, Util, Plot and Datafit. |
Автор: | Иван Денисов [ Четверг, 09 Январь, 2014 22:35 ] |
Заголовок сообщения: | Re: Как отобразить линейчатый спектр? |
Причесал свою программку для построяния спектров. Вложение: Есть еще косяки, особенно с подписями плотных скоплений линий, но это нету уже энтузиазма и времени доделывать. Есть идея, что алгорим может быть связан с физической самоорганизацией, если каждой подписи присвоить потенциалы и вычислять эволюцию такой системы. Тогда подписи красиво выстроятся. Еще я не заморачивался разными проверками на выходы за границы массивов и т.п. поэтому не больше 10 спектров, в каждом не больше 500 точек. Если надо больше, то нужно изменить соответствующие константы в модуле, чтобы не происходили аварийные остановки. Управление переписал под скроллер мыши. - просто скроллинг — прокрутка; + shift — приближение; + ctrl — толщина линий; home — исходный размер. Вложение: Панель управления вызвать возможно из меню Спектр → Панель управления или из документа Docu/Quick-Start.odc А вот тут пример приложения, которое изображения позволяет анализировать: http://molpit.com/?page=47 |
Автор: | Андрей Антошков [ Пятница, 10 Январь, 2014 13:14 ] |
Заголовок сообщения: | Re: Как отобразить линейчатый спектр? |
Иван, СПАСИБО большое. Постараюсь разобраться в программе! |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |