|
vtk 視覺化工具函式庫(VTK,Visualization Toolkit)是一個開放源碼,跨平臺、支援平行處理(VTK曾用于處理大小近乎1個Petabyte的資料,其平臺為美國Los Alamos國家實驗室所有的具1024個處理器之大型系統(tǒng))的圖形應用函式庫。2005年實曾被美國陸軍研究實驗室用于即時模擬俄羅斯制反導彈戰(zhàn)車ZSU23-4受到平面波攻擊的情形,其計算節(jié)點高達2.5兆個之多。
介紹及使用: http://www.cnblogs.com/buffer/archive/2009/03/13/1410235.html結(jié)合Qt使用,部分代碼示例(線圖):(\vtk-5.6.1\GUISupport\Qt\Testing\CxxTestLineSeries.cxx)
 /**//* 曲線 */
vtkQtChartWidget *chart = new vtkQtChartWidget;
vtkQtChartArea *area = chart->getChartArea();
vtkQtLineChart *line = new vtkQtLineChart;

area->addLayer(line);

vtkQtChartLegend *legend = new vtkQtChartLegend();
vtkQtChartLegendManager *manager = new vtkQtChartLegendManager(legend);
manager->setChartLegend(legend);
manager->setChartArea(area);
chart->setLegend(legend);

vtkQtChartMouseSelection *selector = vtkQtChartInteractorSetup::createDefault(area);
vtkQtChartSeriesSelectionHandler *handler = new vtkQtChartSeriesSelectionHandler(selector);
handler->setModeNames("Line Chart - Series", "Line Chart - Points");
handler->setMousePressModifiers(Qt::ControlModifier, Qt::ControlModifier);
handler->setLayer(line);
selector->addHandler(handler);
selector->setSelectionMode("Line Chart - Points");
vtkQtChartInteractorSetup::setupDefaultKeys(area->getInteractor());

QStandardItemModel *model = new QStandardItemModel(3, 2); model->setItemPrototype(new QStandardItem());
model->setVerticalHeaderItem(0, new QStandardItem());
model->setVerticalHeaderItem(1, new QStandardItem());
model->setVerticalHeaderItem(2, new QStandardItem());
model->verticalHeaderItem(0)->setData(0.0, Qt::DisplayRole);
model->verticalHeaderItem(1)->setData(1.0, Qt::DisplayRole);
model->verticalHeaderItem(2)->setData(2.0, Qt::DisplayRole);

model->setHorizontalHeaderItem(0, new QStandardItem("series 1"));
model->setHorizontalHeaderItem(1, new QStandardItem("series 2"));

model->setItem(0, 0, new QStandardItem());
model->setItem(1, 0, new QStandardItem());
model->setItem(2, 0, new QStandardItem());
model->item(0, 0)->setData(0.5, Qt::DisplayRole);
model->item(1, 0)->setData(0.4, Qt::DisplayRole);
model->item(2, 0)->setData(0.6, Qt::DisplayRole);

model->setItem(0, 1, new QStandardItem());
model->setItem(1, 1, new QStandardItem());
model->setItem(2, 1, new QStandardItem());
model->item(0, 1)->setData(0.4, Qt::DisplayRole);
model->item(1, 1)->setData(0.5, Qt::DisplayRole);
model->item(2, 1)->setData(0.4, Qt::DisplayRole);

vtkQtChartTableSeriesModel *tableModel = new vtkQtChartTableSeriesModel(model, line);
line->setModel(tableModel);

chart->show();
|