1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
/*=========================================================================
Program: Visualization Toolkit
Module: TestBoundingBox.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 "vtkMath.h"
#include "vtkBoundingBox.h"
#include "vtkSmartPointer.h"
#include <limits>
#define TestBoundingBoxFailMacro(b,msg) if(!(b)){std::cerr <<msg<<std::endl;return EXIT_FAILURE;}
int TestBoundingBox(int,char *[])
{
{
double n[3]={-1,0.5,0};
double p[3]={-1,-1,-1};
double bb[6] = {-1,1,-1,1,-1,1};
vtkBoundingBox bbox(bb);
bool res = bbox.IntersectPlane(p,n);
bbox.GetBounds(bb);
TestBoundingBoxFailMacro(res && bb[0]==-1 && bb[1]==0,"Intersect Plane Failed!")
}
{
double n[3]={0,0,1};
double p[3]={0,0,0};
double bb[6] = {-1,1,-1,1,-1,1};
vtkBoundingBox bbox(bb);
bool res = bbox.IntersectPlane(p,n);
bbox.GetBounds(bb);
TestBoundingBoxFailMacro(res && bb[4]==0 && bb[5]==1,"Intersect Plane Failed!")
}
{
double n[3]={0,0,-1};
double p[3]={0,0,0};
double bb[6] = {-1,1,-1,1,-1,1};
vtkBoundingBox bbox(bb);
bool res = bbox.IntersectPlane(p,n);
bbox.GetBounds(bb);
TestBoundingBoxFailMacro(res && bb[4]==-1 && bb[5]==0,"Intersect Plane Failed!")
}
{
double n[3]={0,-1,0};
double p[3]={0,0,0};
double bb[6] = {-1,1,-1,1,-1,1};
vtkBoundingBox bbox(bb);
bool res = bbox.IntersectPlane(p,n);
bbox.GetBounds(bb);
TestBoundingBoxFailMacro(res && bb[2]==-1 && bb[3]==0,"Intersect Plane Failed!")
}
{
double n[3]={1,1,1};
double p[3]={0,0,0};
double bb[6] = {-1,1,-1,1,-1,1};
vtkBoundingBox bbox(bb);
bool res = bbox.IntersectPlane(p,n);
bbox.GetBounds(bb);
TestBoundingBoxFailMacro( !res
&& bb[0] ==-1 && bb[1]==1
&& bb[2] ==-1 && bb[3]==1
&& bb[4] ==-1 && bb[5] ==1,"Intersect Plane Failed!")
}
return EXIT_SUCCESS;
}
|