VTK Chart坐标轴

来源:互联网 发布:2011网络春晚大张伟 编辑:程序博客网 时间:2024/06/18 12:24
 虽然用vtk绘制坐标轴有点大才小用,但vtk绘制出来到坐标轴着实挺清秀的:

#include “mainwindow.h”
#include “QApplication”

include “vtkAutoInit.h”

if VTK_MAJOR_VERSION >=7

VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingFreeType)
VTK_MODULE_INIT(vtkRenderingContextOpenGL2)

endif

include “vtkVersion.h”

include “vtkSmartPointer.h”

include “vtkChartXY.h”

include “vtkContextScene.h”

include “vtkContextView.h”

include “vtkFloatArray.h”

include “vtkPlotPoints.h”

include “vtkRenderWindow.h”

include “vtkRenderWindowInteractor.h”

include “vtkRenderer.h”

include “vtkTable.h”

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// MainWindow w;
// w.show();

// return a.exec();

// Set up a 2D scene, add an XY chart to it vtkSmartPointer<vtkContextView> view =   vtkSmartPointer<vtkContextView>::New(); view->GetRenderer()->SetBackground(1.0, 1.0, 1.0); view->GetRenderWindow()->SetSize(400, 300); vtkSmartPointer<vtkChartXY> chart =   vtkSmartPointer<vtkChartXY>::New(); view->GetScene()->AddItem(chart); chart->SetShowLegend(true); // Create a table with some points in it... vtkSmartPointer<vtkTable> table =   vtkSmartPointer<vtkTable>::New(); vtkSmartPointer<vtkFloatArray> arrX =   vtkSmartPointer<vtkFloatArray>::New(); arrX->SetName("X Axis"); table->AddColumn(arrX); vtkSmartPointer<vtkFloatArray> arrC =   vtkSmartPointer<vtkFloatArray>::New(); arrC->SetName("Cosine"); table->AddColumn(arrC); vtkSmartPointer<vtkFloatArray> arrS =   vtkSmartPointer<vtkFloatArray>::New(); arrS->SetName("Sine"); table->AddColumn(arrS); vtkSmartPointer<vtkFloatArray> arrT =   vtkSmartPointer<vtkFloatArray>::New(); arrT->SetName("Sine - Cosine"); table->AddColumn(arrT); // Test charting with a few more points... int numPoints = 40; float inc = 7.5 / (numPoints-1); table->SetNumberOfRows(numPoints); for (int i = 0; i < numPoints; ++i)   {   table->SetValue(i, 0, i * inc);   table->SetValue(i, 1, cos(i * inc) + 0.0);   table->SetValue(i, 2, sin(i * inc) + 0.0);   table->SetValue(i, 3, sin(i * inc) - cos(i * inc));   } // Add multiple scatter plots, setting the colors etc vtkPlot *points = chart->AddPlot(vtkChart::POINTS);

#if VTK_MAJOR_VERSION <= 5
points->SetInput(table, 0, 1);
#else
points->SetInputData(table, 0, 1);
#endif
points->SetColor(0, 0, 0, 255);
points->SetWidth(1.0);
vtkPlotPoints::SafeDownCast(points)->SetMarkerStyle(vtkPlotPoints::CROSS);

 points = chart->AddPlot(vtkChart::POINTS);

#if VTK_MAJOR_VERSION <= 5
points->SetInput(table, 0, 2);
#else
points->SetInputData(table, 0, 2);
#endif
points->SetColor(0, 0, 0, 255);
points->SetWidth(1.0);
vtkPlotPoints::SafeDownCast(points)->SetMarkerStyle(vtkPlotPoints::PLUS);

 points = chart->AddPlot(vtkChart::POINTS);

#if VTK_MAJOR_VERSION <= 5
points->SetInput(table, 0, 3);
#else
points->SetInputData(table, 0, 3);
#endif
points->SetColor(0, 0, 255, 255);
points->SetWidth(1.0);
vtkPlotPoints::SafeDownCast(points)->SetMarkerStyle(vtkPlotPoints::CIRCLE);

 //Finally render the scene view->GetRenderWindow()->SetMultiSamples(0); view->GetInteractor()->Initialize(); view->GetInteractor()->Start(); return EXIT_SUCCESS;

}

sleep;gnome-screenshot截图:
这里写图片描述

原创粉丝点击