Консультация № 136982
15.05.2008, 19:00
0.00 руб.
0 2 2
Добрый вечер, честной народ! :)))
Выручите помощью по вот какому вопросу... Меньшого брата загрузили в университете задачкой по C++. Привожу примерный текст задачи.

Есть экран с узкой щелью. На него падает плоская световая волна с заданной длиной. На другом экране, параллельном первому, наблюдается дифракционная картина. Нужно рассчитать интенсивность света в картине в зависимости от координаты на экране и построить график этой зависимости. Кроме того, построить график интенсивности света в <u>центре</u> экрана (напротив щели) в зависимости от расстояния от щели до экрана. Графики должны быть сделаны с помощью библиотеки FLTK и иметь элементы управления для изменения параметров задачи - длины волны, размеров щели, расстояния до щели.

Теперь что нам непонятно... Я не прошу написать готовую программу(как эксперт с довольно нешуточным статусом я крайне отрицательно отношусь к халяве на портале), я прошу подсказать, какой класс из данной библиотеки следует использовать. Скажем, обсчет точек графика мы сами сделаем. Основной затык - работа с графикой, да еще и с использованием библиотеки FLTK.
Расчет дифракции, конечно же, мы тоже сами осуществим, дело нехитрое.
Хотя... Если кому труднее объяснить, чем написать... Мы, конечно, не обидимся.
На PHP я бы реализовал такую задачку довольно легко, но в том-то и дело, что препод не будет ждать, пока я установлю братцу сервер на учебной машине :)))

Перефразировать вопрос можно еще вот так: есть нумерованный массив координат, где номер элемента массива - координата по оси Х, а значение элемента - координата по Y. Так вот, требуется положить эти точки на график с использованием вышеуказанной библиотеки. Пожалуй, в данном случае я бы все-таки не отказался от готового кода :)))
С уважением, Товарищ Бородин

Обсуждение

Неизвестный
16.05.2008, 04:17
общий
это ответ
Здравствуйте, Товарищ Бородин!
FLTK конечно не лучшая из библиотек, но если стоит такая задача... На <a href=http://www.fltk.org>официальном сайте</a> FLTK есть документация (естественно на английском). В разделе <a href=http://www.fltk.org/doc-1.3/drawing.html>Drawing Things in FLTK</a> есть описания функций библиотеки, отвечающих за рисование различных примитивов, в том числе и нужных в данном случае линий. Например вот:
void fl_line(int x, int y, int x1, int y1).
Но простое описание мало чего дает без примеров, которых на официальном сайте нет. Примеры можно посмотреть <a href=http://www.seriss.com/people/erco/fltk/>здесь</a>. Среди прочего есть пример рисования диагонального креста на форме (<a href=http://www.seriss.com/people/erco/fltk/#FltkX>Draw An X</a>). Вашу задачу можно решить, отталкиваясь от кода данного примера. То есть нужно создать класс наследованный от Fl_Widget, содержащий массив с данными и , переопределив метод draw, создать отрисовку графика.
давно
Старший Модератор
17042
808
16.05.2008, 21:25
общий
это ответ
Здравствуйте, Товарищ Бородин!
К сожалению, текст ответа на Ваш вопрос просто не влез в форму ответа. Поэтому если для Вас это ещё актуально, то составленное мной подробное руководство по отрисовке графика с помощью FLTK Вы можете посмотреть <a href=http://rusfaq.ru/forum/Opinions/75/11/62>здесь</a>.
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
Форма ответа