2010-05-22 2 views
1

Есть ли библиотека графиков C++, которая может отображать визуальные графики (например, гиперболы и параболы и линейные уравнения) на основе уравнения, которое оно задано, и это кросс-платформа? Или я просто прошу слишком много ...Есть ли библиотека графиков C++?

ответ

0

Возьмем ваш вопрос шаг за шагом.

  1. "на основе уравнения [который] он задан" Это потребует от вас написать парсер выражений; C++ не может интерпретировать уравнения «на лету», не написав для этого процедуру. Для этого я рекомендую вам посмотреть Bison (перейдите прямо к примеру RPN calc, чтобы получить идею).

  2. Для библиотек вы можете получить любой инструментарий GUI для C++; есть десятки; рекомендация по QT, вероятно, самая честная. Также проверьте Wikipedia. Вам нужно любой инструментарий, который обеспечит вам холст где вы можете окрасить или визуализации линии или шлицы. Это не тривиально, но и не сложно.

Ваша программа будет, вероятно, работать следующим образом:

  1. Получить математическое выражение (или параметры для известной функции; как оси и центр эллипса).
  2. Сформировать множество точек (это делается с помощью цикла в C++)
  3. пакета обновления этих точек и послал их в краска или визуализации метод вашего инструментария (с соответствующим масштабированием/нормализация

Опять же, это не тривиально, но не трудно либо.

Вы изобретать колесо, но я благодарю вас за это.

Ch EERS,

J.

1

Посмотрите на Qt. Это может иметь некоторые возможности графиков. И есть gnuplot. Это очень обширно, поэтому, возможно, это слишком сложно для ваших нужд. Это кросс-платформенный и есть C++ API.

+1

Qt не имеет одного из своих. Тем не менее, есть библиотека с открытым исходным кодом на http://qwt.sourceforge.net/, которая является очень полной и простой в использовании. Для 3D-диаграмм посмотрите http://qwtplot3d.sourceforge.net/. –

0

Если все, что вы заинтересованы в том, конечный результат, а не на стороне программирования вещей; вы можете попробовать взаимодействовать с чем-то вроде gnuplot (http://www.gnuplot.info/).

Если вас интересует больше, я бы рекомендовал посмотреть их страницу «Ссылки». Это предлагает кучу библиотек интерфейсов и повторных реализаций (в основном для языков, отличных от C, из того, что я вижу).

Надеюсь, что это поможет.

1

MathGL имеет выражающий парсер и может использовать функцию, определенную текстовой формулой (с большим количеством специальной функции). Также вы можете создать набор данных, заполнить его формулой и построить косвенные функции (например, эллипс, a * x^2 + b * x^2 = 1).

+0

+1: Ничего себе, никогда не находил этого раньше. Выглядит просто, и очень причудливый ': O' – rubenvb