Commit 347fb125 authored by Marcus D. Hanwell's avatar Marcus D. Hanwell

Enhanced the parallel coordinates chart for doubles

The parallel coordinates did not correctly handle double precision
input, added support to vtkPlotParallelCoordinates and created a
new test to verify it. Also some very minor clean up in the other
test, and fixed variable naming for consistency.

Change-Id: I4d688857dcfe86b044b8284789e7873f698d8820
parent 3d0f25a1
......@@ -41,6 +41,7 @@ vtk_add_test_cxx(
TestMultipleRenderers.cxx,-E25
TestMultipleScalarsToColors.cxx,-E25
TestParallelCoordinates.cxx,-E15
TestParallelCoordinatesDouble.cxx,-E15
TestPieChart.cxx
TestPlotMatrix.cxx
TestScalarsToColors.cxx
......
/*=========================================================================
Program: Visualization Toolkit
Module: TestPCPlot.cxx
Module: TestParallelCoordinates.cxx
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
......@@ -15,7 +15,6 @@
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkSmartPointer.h"
#include "vtkChartParallelCoordinates.h"
#include "vtkPlot.h"
#include "vtkTable.h"
......
/*=========================================================================
Program: Visualization Toolkit
Module: TestParallelCoodinatesDouble.cxx
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkChartParallelCoordinates.h"
#include "vtkPlot.h"
#include "vtkTable.h"
#include "vtkDoubleArray.h"
#include "vtkContextView.h"
#include "vtkContextScene.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkNew.h"
//----------------------------------------------------------------------------
int TestParallelCoordinatesDouble(int , char* [])
{
// Set up a 2D scene, add an XY chart to it
vtkNew<vtkContextView> view;
view->GetRenderWindow()->SetSize(600, 400);
vtkNew<vtkChartParallelCoordinates> chart;
view->GetScene()->AddItem(chart.GetPointer());
// Create a table with some points in it...
vtkNew<vtkTable> table;
vtkNew<vtkDoubleArray> arrX;
arrX->SetName("x");
table->AddColumn(arrX.GetPointer());
vtkNew<vtkDoubleArray> arrC;
arrC->SetName("cosine");
table->AddColumn(arrC.GetPointer());
vtkNew<vtkDoubleArray> arrS;
arrS->SetName("sine");
table->AddColumn(arrS.GetPointer());
vtkNew<vtkDoubleArray> arrS2;
arrS2->SetName("tangent");
table->AddColumn(arrS2.GetPointer());
// Test charting with a few more points...
int numPoints = 200;
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) * 1.0e-82);
table->SetValue(i, 2, sin(i * inc) * 1.0e+89);
table->SetValue(i, 3, tan(i * inc) + 0.5);
}
chart->GetPlot(0)->SetInputData(table.GetPointer());
view->GetRenderWindow()->SetMultiSamples(0);
view->GetInteractor()->Initialize();
view->GetInteractor()->Start();
return EXIT_SUCCESS;
}
......@@ -58,7 +58,7 @@ public:
//-----------------------------------------------------------------------------
vtkStandardNewMacro(vtkPlotParallelCoordinates);
vtkStandardNewMacro(vtkPlotParallelCoordinates)
//-----------------------------------------------------------------------------
vtkPlotParallelCoordinates::vtkPlotParallelCoordinates()
......@@ -150,14 +150,14 @@ bool vtkPlotParallelCoordinates::Paint(vtkContext2D *painter)
// Draw all of the lines
painter->ApplyPen(this->Pen);
int nc_comps(0);
int ncComps(0);
if (this->ScalarVisibility && this->Colors)
{
nc_comps = static_cast<int>(this->Colors->GetNumberOfComponents());
ncComps = static_cast<int>(this->Colors->GetNumberOfComponents());
}
if (this->ScalarVisibility && this->Colors && nc_comps == 4)
if (this->ScalarVisibility && this->Colors && ncComps == 4)
{
for (size_t i = 0, nc = 0; i < rows; ++i, nc += nc_comps)
for (size_t i = 0, nc = 0; i < rows; ++i, nc += ncComps)
{
for (size_t j = 0; j < cols; ++j)
{
......@@ -373,13 +373,13 @@ bool vtkPlotParallelCoordinates::UpdateTableCache(vtkTable *table)
}
// Also need the range from the appropriate axis, to normalize points
float min = axis->GetUnscaledMinimum();
float max = axis->GetUnscaledMaximum();
float scale = 1.0f / (max - min);
double min = axis->GetUnscaledMinimum();
double max = axis->GetUnscaledMaximum();
double scale = 1.0f / (max - min);
for (vtkIdType j = 0; j < rows; ++j)
{
col[j] = (data->GetTuple1(j)-min) * scale;
col[j] = (data->GetTuple1(j) - min) * scale;
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment