Как мне отформатировать свой файл .dat, чтобы можно сделать трехмерный векторный график?

Я ' Я работаю над этой задачей программирования для колледжа, где мы должны написать программу c ++ , которая вычисляет вектор магнитного поля для определенных катушек в трехмерном пространстве.

Мне удалось написать эту программу, и я думаю, она у меня работает очень хорошо.

Я хочу добавить специальный тон (это моя экзаменационная работа, поэтому она должна быть очень хорошей!): Я не хочу вычерчивать векторы.

Я привык звонить gnuplot из c ++ (через конвейер), и это то, что я обычно делаю:

  1. создаю выходной поток, который записывает данные в файл .dat
  2. открытый канал gnuplot
  3. заставляет gnuplot строить все содержимое .dat

Поскольку мои данные всегда были 2D, x и y , я совершенно потеряно здесь. У меня вопрос:

  1. Как отформатировать файл .dat (например, использовать ли фигурные скобки для группировки компонентов вектора?)
  2. какова на самом деле команда gnuplot для построения трехмерного векторного поля?

Это было бы было бы проще, если бы я мог отформатировать файл .dat следующим образом:

# Px    Py    Pz    Bx    By    Bz
  1     0     2     0.7   0.5   0.25 #<= example data line
  ... more data ...

когда вектор магнитного поля в точке P = (1,0,2) равен вектору B = (0,7,0,5,0,25) . Это было бы легко запрограммировать, реальный вопрос: подойдет ли это? и как построить график в gnuplot. (вау, я думаю, что я задавал один и тот же вопрос 3 раза.)


Подключение к gnuplot

Хорошо, раз уж кто-то попросил меня описать, как я трубку (не знаю) если это правильный термин, подумайте), в gnuplot . Вот он:

  1. Сначала откройте канал и назовите его pipe :

     FILE * pipe = popen ("gnuplot -persist 2>
    
  2. Сообщите gnuplot , что делать через конвейер:

     fprintf (pipe, "установить термин x11 расширенный \ n");
    fprintf (pipe, "построить x ^ 2 ti 'x ^ 2' с линиями \ n");
    

    обратите внимание на \ n , который абсолютно необходим. Это то, что выполняет команду.

  3. закрыть канал:

     pclose (pipe);
    

Необходимая библиотека называется Я полагаю.

7
задан romeovs 14 April 2011 в 17:57
поделиться