OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 10 Июль, 2020 16:11

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: Среда, 08 Январь, 2014 15:08 

Зарегистрирован: Вторник, 07 Январь, 2014 19:33
Сообщения: 2
Доброго времени суток, уважаемые форумчане. Передо мною стоит следующая задача: реализовать программу для расчета дисперсии призматического спектрографа, а так же путем визуального сравнения полученных спектров определить элементный состав.

Так как я практически прослушал курс Ф.В.Ткачева - "Программирование для непрофессионалов", то решил реализовать ее в среде BlackBox. Численный расчет реализовал быстро, тем более что уравнения решаются аналитически, а вот с отображением спектра возникли проблемы. Линейчатый спектр, к примеру ртутной лампы - это набор линий со следующими координатами:
365.0153 нм
404.6563 нм
435.8328 нм
546.0735 нм
578.2 нм
Я попытался воспользоваться встроенным модулем Views, но функция DrawRect принимает только целые аргументы в качестве координат, мне же необходима точность до 2 знака как минимум. Если же *100 и переводить в целые числа, то окно, в котором отображены линии получается гораздо больше экрана.
Так же я попробовал разобраться в подсистеме DiaPlot, которая может отображать массивы реальных чисел, но она настроена на графическое отображение и все точки соединяются.
Попытался разобраться в программе тетриса, но из-за слабых знаний в программировании, не смог разобраться с построением модели.
Пожалуйста, подскажите, как мне реализовать поставленную задачу? Какую подсистему изучать целенаправленно и не разбрасываться на другие?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 08 Январь, 2014 15:18 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2651
Откуда: Россия, Ярославль
Андрей Антошков писал(а):
мне же необходима точность до 2 знака как минимум.
Но ведь изображение на экране состоит из дискретных элементов (пикселов). Поэтому рисунок всегда будет приближенным по точности.
Можно поступить следующим образом.
Отобразить нужную часть диапазона на экране в подходящем масштабе.
Например 578 - 365 = 213 (нм).
Плюс запас с двух сторон, округлим до 250 нм.
Если установить масштаб 1 нм = 4 пикселя, то вы сможете на экране шириной 1000 пикселей отобразить полосы спектра в диапазоне 365 .. 578 нм с точностью до 0,25 нм.
А если усложнить ваше отображение, то можно будет динамически увеличивать масштаб при просмотре, например, колесом мыши.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 08 Январь, 2014 16:52 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2764
Я писал на третьем курсе программу для отображения спектров. Сейчас проведу ревизию и выложу тут :) думаю, она вам поможет разобраться что к чему и допилите для своих нужд. Также есть программа для отображения фотографий и графики поверх этих риснуков, если объединить эти программы, то возможно совмещать спектры с фотоизображениями и даже как-то автомматизировать процесс сличения линий. Тоже ссылку на нее дам в следующем сообщении.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Январь, 2014 14:58 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4593
Откуда: Россия, Орёл
Попробуйте поглядеть примеры в 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 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2764
Причесал свою программку для построяния спектров.
Вложение:
Спектропостроитель.7z [402.61 КБ]
Скачиваний: 157

Есть еще косяки, особенно с подписями плотных скоплений линий, но это нету уже энтузиазма и времени доделывать. Есть идея, что алгорим может быть связан с физической самоорганизацией, если каждой подписи присвоить потенциалы и вычислять эволюцию такой системы. Тогда подписи красиво выстроятся.
Еще я не заморачивался разными проверками на выходы за границы массивов и т.п. поэтому не больше 10 спектров, в каждом не больше 500 точек. Если надо больше, то нужно изменить соответствующие константы в модуле, чтобы не происходили аварийные остановки.

Управление переписал под скроллер мыши.
- просто скроллинг — прокрутка;
+ shift — приближение;
+ ctrl — толщина линий;
home — исходный размер.

Вложение:
demo.png
demo.png [ 50.1 КБ | Просмотров: 3237 ]


Панель управления вызвать возможно из меню Спектр → Панель управления или из документа Docu/Quick-Start.odc

А вот тут пример приложения, которое изображения позволяет анализировать:
http://molpit.com/?page=47


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 10 Январь, 2014 13:14 

Зарегистрирован: Вторник, 07 Январь, 2014 19:33
Сообщения: 2
Иван, СПАСИБО большое. Постараюсь разобраться в программе!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2020, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB