我想用C ++创建函数图表。任何人都可以帮我入门吗? 假设我想绘制函数y = x(它是通过点(0,0)(1,1)(2,2).....(20,20)等的直线) 我怎么能这样做? (如果你还建议如何绘制y& x轴,那就更好了) 对不起,但它不在书上(欢迎好文本推荐,顺便说一句:-) C ++),网上主要有游戏图形。 我能找到的唯一严重的问题是: somewhat related question asked in this very forum(上帝保佑,我们有stackoverflow!)
答案 0 :(得分:7)
我会考虑两个选择:
答案 1 :(得分:4)
您还可以使用Gnuplot,一个交互式绘图程序:您的C ++代码处理和计算您的数据,然后它可以将结果导出到文件或Gnuplot可以处理的标准输出。例如,你可以这样做:
my_program | gnuplot
将根据您的程序调用Gnuplot。
Gnuplot功能非常强大,您可以查看examples available here。
Gnuplot output example http://gnuplot.sourceforge.net/demo_cvs/heatmaps.3.png
您可以在此处找到有关C / C ++中Gnuplot的更多信息:
How to plot graphs in Gnuplot in Real time in C++?
另一种可能性是使用R。这种语言在统计学家中非常有名。您可能需要查看some examples。
答案 2 :(得分:1)
我不知道一个有效的快速简单的方法来做你在c ++中描述的。 您将要么将文本输出到控制台以显示您希望显示的“线条”的效果。或使用directx或opengl设置适当的GUI界面。 许多图书馆确实存在,这简化了设置GUI的任务。但是有最初的开销。
我建议制作一个c#表单应用程序并查看其中的绘制线。它也很容易让你在运行时放入方程而不是硬编码。
答案 3 :(得分:1)
我使用ROOT。这是大多数粒子物理学家使用的,特别是在欧洲核子研究中心和费米实验室。免费。它们具有适用于Linux,Mac和Windows的版本。 http://root.cern.ch/drupal/
很容易制作适合出版的情节,直方图和产出。
编辑:它基于C ++构建,但也有python绑定。
编辑:如果在linux上安装root用于使用带有GCC的ROOT编译代码,例如:
g++ foo.C -o foo `root-config --cflags --libs` -O3
答案 4 :(得分:1)
三个月前我有同样的问题。我发现为我的应用程序绘图的最好方法是使用Qt
框架(因为它已经为您创建了一个GUI,然后利用这个工具:
此小部件在编译并与项目链接时,允许您直接从界面绘制2d图形。这样可以省去写入文件,使用matlab加载等的麻烦。
目前,它只处理2个d图,但将它扩展到三维或表面图并不困难。
祝你好运!
答案 5 :(得分:0)
在这些日子里,我发现了一些事情: 1.本书“C ++编程与图形入门”C.Pozrikidis 2. Visual Studio C++ 2010 express and OpenGL (参见该页面的最后评论) 谁能提出更好的解决方案? (教科书,免费dll等)
答案 6 :(得分:0)
您可以使用Windows.h中的某些功能。从控制台功能开始。它们是一个很好的起点,使我们能够在控制台上工作,就好像它是笛卡尔平面一样。
虽然我从未尝试过用它们画画。我已经能够为文本显示创建漂亮的表格和布局。与联系人应用程序中的联系人姓名和电话号码一样。
这些功能可以将光标移动到特定的坐标。并在那里写点东西。总的来说,它们像笛卡尔飞机一样工作。但只有坐标系不是我们使用的正常坐标系(4个象限),它更像是一个只有一个象限的计算机类型系统,在x轴上从左上o标记,在y轴上从上到下标记。您可能必须构建一些函数,以便优化我们或我们使用的正常系统。
但总而言之,这很有用,你可以尝试一下。
答案 7 :(得分:0)
我安装了gnuplot(非常简单:在硬盘中创建一个文件夹,解压缩并从wgnuplot.exe发送到destop的链接)现在我将数据从Visual Studio(C ++)中导出到.txt文件中然后我从gnuplot窗口调用这些文件。为了节省其他人同样浪费时间和头痛我经历过: - )
我还安装了ROOT,非常简单,cern页面中有一个常规的Microsoft安装程序。链接在这里: http://root.cern.ch/drupal/content/production-version-534 并滚动到页面底部,然后选择与Visual Studio兼容的MSI版本。无论如何,我仍然必须学习如何使用Visual Studio中的ROOT。帮助将不胜感激。 使用ROOT:http://root.cern.ch/phpBB3/viewtopic.php?f=3&t=11641
在Visual Studio中创建项目也有很多帮助以上所有内容均适用于WINDOWS用户。
答案 8 :(得分:0)
i was just plotting a simmilar function y=x²
in windows, or any library based on windows you will probably intercept message WM_PAINT
case WM_PAINT:
HDC hdc = beginpaint();
// change device contexts hdc y axys orientation
// change logical coordinates of point (0,0) to half of width and half of //eight of your client area
// u might want to change from pixels to mm
// for each x from -10 to 10 y = x²
// draw a little line for each point in this range
// end painting, this will release hcd