C++ 我应该如何格式化我的.dat文件,以便制作三维矢量图?
我正在为大学做这个编程任务,我们必须编写一个C++ 我应该如何格式化我的.dat文件,以便制作三维矢量图?,c++,vector,3d,field,gnuplot,C++,Vector,3d,Field,Gnuplot,我正在为大学做这个编程任务,我们必须编写一个c++程序,计算三维空间中某些线圈的磁场矢量 我已经成功地编写了这个程序,我想我已经把它运行得很好了 不过我想加上一个特别的东西(这是我的试卷,所以必须特别好!):我不想画出向量 我习惯于从c++(通过管道)调用gnuplot,这就是我通常做的: 创建将数据写入.dat文件的输出流 打开gnuplot管道 使gnuplot绘制.dat 因为我的数据一直是2D,x和y绘图,所以我在这里很迷茫。我的问题是: 如何格式化.dat文件(例如,是否使用大括号对向
c++
程序,计算三维空间中某些线圈的磁场矢量
我已经成功地编写了这个程序,我想我已经把它运行得很好了
不过我想加上一个特别的东西(这是我的试卷,所以必须特别好!):我不想画出向量
我习惯于从c++
(通过管道)调用gnuplot
,这就是我通常做的:
.dat
文件的输出流.dat
x
和y
绘图,所以我在这里很迷茫。我的问题是:
.dat
文件(例如,是否使用大括号对向量组件进行分组?).dat
文件,那就很容易了:
# Px Py Pz Bx By Bz
1 0 2 0.7 0.5 0.25 #<= example data line
... more data ...
gnuplot
通过管道做什么:
fprintf(pipe, "set term x11 enhanced \n");
fprintf(pipe, "plot x^2 ti 'x^2' with lines\n");
pclose(pipe);
请注意\n
,这是绝对必要的。它是执行命令的工具fprintf(pipe, "set term x11 enhanced \n");
fprintf(pipe, "plot x^2 ti 'x^2' with lines\n");
pclose(pipe);
我相信必要的库叫做
我制作了这个简单的示例,向您展示如何绘制向量场。输出类似于下图:
我用于绘制此图的数据示例是:
# Px Py Pz Bx By Bz
0 0 0 0.8 0.8 0.45
0 0 1 0.5 0.7 0.35
0 0 2 0.7 0.5 0.25
0 1 0 0.65 0.65 0.50
0 1 1 0.6 0.6 0.3
0 1 2 0.45 0.45 0.20
1 0 0 0.5 0.7 0.35
1 0 1 0.75 0.75 0.4
1 0 2 0.85 0.85 0.25
1 1 0 0.90 0.85 0.23
1 1 1 0.95 0.86 0.20
1 1 2 0.98 0.88 0.13
2 0 0 0.73 0.83 0.43
2 0 1 0.53 0.73 0.33
2 0 2 0.73 0.53 0.23
2 1 0 0.68 0.68 0.52
2 1 1 0.63 0.57 0.23
2 1 2 0.48 0.42 0.22
绘制它的命令是:
gnuplot> splot "./data3d.dat" with vectors
现在,您应该阅读的第44节,第53页(和这里的)。你可能会发现这也很有用
编辑:
此命令不适合您的描述:将从(x,y,z)映射到(t,u,v)
。它实际上是这样映射的:从(X,Y,Z)到(X+dX,Y+dY,Z+dZ)
干杯,
因为我对您在2D中调用gnuplot的“管道”方式非常感兴趣。你能给出一段简短的代码吗?谢谢哦非常感谢您提供管道代码。我肯定会在某处使用它。:)