You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
5.1 KiB
176 lines
5.1 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: Regression.java,v $
|
|
|
|
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.
|
|
|
|
=========================================================================*/
|
|
import vtk.*;
|
|
|
|
public class Regression
|
|
{
|
|
public static void main (String []args)
|
|
{
|
|
vtkTesting2.Initialize(args, true);
|
|
|
|
|
|
vtkShortArray array = new vtkShortArray();
|
|
array.InsertNextTuple1(3.0);
|
|
array.InsertNextTuple1(1.0);
|
|
array.InsertNextTuple1(4.0);
|
|
array.InsertNextTuple1(1.0);
|
|
array.InsertNextTuple1(5.0);
|
|
array.InsertNextTuple1(9.0);
|
|
array.InsertNextTuple1(2.0);
|
|
array.InsertNextTuple1(6.0);
|
|
array.InsertNextTuple1(5.0);
|
|
array.InsertNextTuple1(3.0);
|
|
array.InsertNextTuple1(5.0);
|
|
array.InsertNextTuple1(8.0);
|
|
array.InsertNextTuple1(9.0);
|
|
array.InsertNextTuple1(7.0);
|
|
array.InsertNextTuple1(9.0);
|
|
array.InsertNextTuple1(3.0);
|
|
array.InsertNextTuple1(1.0);
|
|
short[] carray = array.GetJavaArray();
|
|
int cc;
|
|
System.out.print("[");
|
|
for ( cc = 0; cc < carray.length; cc ++ )
|
|
{
|
|
short i = carray[cc];
|
|
System.out.print(i);
|
|
}
|
|
System.out.println("]");
|
|
|
|
vtkUnsignedShortArray narray = new vtkUnsignedShortArray();
|
|
narray.SetJavaArray(carray);
|
|
System.out.print("[");
|
|
for ( cc = 0; cc <= narray.GetMaxId(); cc ++ )
|
|
{
|
|
int i = narray.GetValue(cc);
|
|
System.out.print(i);
|
|
}
|
|
System.out.println("]");
|
|
|
|
vtkRenderWindow renWin = new vtkRenderWindow();
|
|
vtkRenderer ren1 = new vtkRenderer();
|
|
renWin.AddRenderer(ren1);
|
|
vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();
|
|
iren.SetRenderWindow(renWin);
|
|
vtkConeSource cone = new vtkConeSource();
|
|
cone.SetResolution(8);
|
|
vtkPolyDataMapper coneMapper = new vtkPolyDataMapper();
|
|
coneMapper.SetInput(cone.GetOutput());
|
|
|
|
vtkActor coneActor = new vtkActor();
|
|
coneActor.SetMapper(coneMapper);
|
|
|
|
ren1.AddActor(coneActor);
|
|
renWin.Render();
|
|
vtkWindowToImageFilter w2i = new vtkWindowToImageFilter();
|
|
w2i.SetInput(renWin);
|
|
w2i.Modified();
|
|
renWin.Render();
|
|
w2i.Update();
|
|
vtkImageData image = w2i.GetOutput();
|
|
|
|
vtkUnsignedCharArray da = (vtkUnsignedCharArray)image.GetPointData().GetScalars();
|
|
byte[] barray = da.GetJavaArray();
|
|
|
|
System.out.println("Length of array: " + barray.length);
|
|
|
|
vtkUnsignedCharArray nda = new vtkUnsignedCharArray();
|
|
nda.SetJavaArray(barray);
|
|
|
|
vtkImageData nimage = new vtkImageData();
|
|
nimage.SetDimensions(image.GetDimensions());
|
|
nimage.SetSpacing(image.GetSpacing());
|
|
nimage.SetOrigin(image.GetOrigin());
|
|
nimage.SetScalarType(image.GetScalarType());
|
|
nimage.SetNumberOfScalarComponents(image.GetNumberOfScalarComponents());
|
|
nimage.AllocateScalars();
|
|
vtkUnsignedCharArray nida = (vtkUnsignedCharArray)nimage.GetPointData().GetScalars();
|
|
nida.SetJavaArray(barray);
|
|
|
|
int retVal0 = vtkTesting2.PASSED;
|
|
|
|
for ( cc = 0; cc <= da.GetMaxId(); cc ++ )
|
|
{
|
|
int v1=0, v2=0, v3=0;
|
|
v1 = da.GetValue(cc);
|
|
if ( cc <= nda.GetMaxId() )
|
|
{
|
|
v2 = nda.GetValue(cc);
|
|
}
|
|
else
|
|
{
|
|
System.out.println("Cannot find point " + cc + " in nda");
|
|
retVal0 = vtkTesting2.FAILED;
|
|
}
|
|
if ( cc <= nida.GetMaxId() )
|
|
{
|
|
v3 = nida.GetValue(cc);
|
|
}
|
|
else
|
|
{
|
|
System.out.println("Cannot find point " + cc + " in nida");
|
|
retVal0 = vtkTesting2.FAILED;
|
|
}
|
|
if ( v1 != v2 || v1 != v3 )
|
|
{
|
|
System.out.println("Wrong point: " + v1 + " <> " + v2 + " <> " + v3);
|
|
retVal0 = vtkTesting2.FAILED;
|
|
}
|
|
}
|
|
|
|
vtkImageDifference imgDiff = new vtkImageDifference();
|
|
imgDiff.SetInput(nimage);
|
|
imgDiff.SetImage(image);
|
|
imgDiff.Update();
|
|
|
|
int retVal1 = vtkTesting2.PASSED;
|
|
if ( imgDiff.GetThresholdedError() != 0 )
|
|
{
|
|
System.out.println("Problem with array conversion. Image difference is: " + imgDiff.GetThresholdedError());
|
|
vtkPNGWriter wr = new vtkPNGWriter();
|
|
wr.SetInput(image);
|
|
wr.SetFileName("im1.png");
|
|
wr.Write();
|
|
wr.SetInput(nimage);
|
|
wr.SetFileName("im2.png");
|
|
wr.Write();
|
|
wr.SetInput(imgDiff.GetOutput());
|
|
wr.SetFileName("diff.png");
|
|
wr.Write();
|
|
retVal1 = vtkTesting2.FAILED;
|
|
}
|
|
|
|
int retVal2 = vtkTesting2.PASSED;
|
|
if ( vtkTesting2.IsInteractive() )
|
|
{
|
|
iren.Start();
|
|
}
|
|
else
|
|
{
|
|
vtkTesting2.RegressionTest(renWin, 10);
|
|
}
|
|
|
|
if ( retVal0 != vtkTesting2.PASSED )
|
|
{
|
|
vtkTesting2.Exit(retVal0);
|
|
}
|
|
if ( retVal1 != vtkTesting2.PASSED )
|
|
{
|
|
vtkTesting2.Exit(retVal1);
|
|
}
|
|
vtkTesting2.Exit(retVal2);
|
|
}
|
|
}
|
|
|
|
|