【发布时间】:2016-12-07 10:43:16
【问题描述】:
我用 C++ 编写了一个代码,它在给定节点坐标的情况下找到几何图的边(彼此足够接近的点是相连的)。我现在想绘制图表,将链接的坐标通过管道传输到 Gnuplot。这看起来像这样:
FILE *pipe = popen("gnuplot -persist", "w");
fprintf(pipe, "\n");
fprintf(pipe, "set polar\n");
fprintf(pipe, "plot '-' with linespoints \n");
现在每次找到链接(使用广度优先搜索算法),我都会这样做
fprintf(pipe, "%g %g\n", RC[j].angle,RC[j].radius);
fprintf(pipe, "%g %g\n", RC[start[ptr]].angle,RC[start[ptr]].radius);
fprintf(pipe, "%g %g\n");
当搜索算法完成时,我以
结尾fprintf(pipe, "e\n");
fflush(pipe);
fclose(pipe);
然而,这并没有打印出我期望的几何图形(远离的点原来是连接的)。如果我使用此过程将数据写入文件
outfile << RC[j].angle << ", " << RC[j].radius << endl;
outfile << RC[start[ptr]].angle << ", " << RC[start[ptr]].radius << endl;
outfile << " " << endl;
我确实得到了我想要的图表。管道有什么问题?
【问题讨论】:
-
让你的C++程序写入一个标准文件并将这个文件交给gnuplot;这样你就可以知道是 C++ 还是 gnuplot 错误。
-
听从您的建议,通过一个标准文件,我得到了我正在寻找的图表。所以错误在于管道算法。帖子已编辑。
-
我可以对我的回答提出反馈意见吗?