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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
/*=========================================================================
Program: Image Guided Surgery Software Toolkit
Module: $RCSfile: igstkCoordinateSystemTest3.cxx,v $
Language: C++
Date: $Date: 2010-12-14 16:31:33 $
Version: $Revision: 1.2 $
Copyright (c) ISC Insight Software Consortium. All rights reserved.
See IGSTKCopyright.txt or http://www.igstk.org/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 notices for more information.
=========================================================================*/
#include "igstkTransform.h"
#include "igstkCoordinateSystem.h"
#include "igstkLogger.h"
#include "itkStdStreamLogOutput.h"
#include "itkTimeProbe.h"
int igstkCoordinateSystemTest3(int , char* [])
{
const int depth = 10;
const int numIters = 100000;
typedef igstk::Object::LoggerType LoggerType;
typedef itk::StdStreamLogOutput LogOutputType;
typedef igstk::CoordinateSystem CoordinateSystem;
typedef CoordinateSystem::Pointer CoordinateSystemPointer;
LoggerType::Pointer logger = LoggerType::New();
LogOutputType::Pointer logOutput = LogOutputType::New();
logOutput->SetStream( std::cout );
logger->AddLogOutput( logOutput );
logger->SetPriorityLevel( LoggerType::CRITICAL );
std::cout << "Running igstkCoordinateSystemTest3" << std::endl;
CoordinateSystemPointer root = CoordinateSystem::New();
root->SetLogger( logger );
igstk::Transform identity;
identity.SetToIdentity(igstk::TimeStamp::GetLongestPossibleTime());
std::vector<CoordinateSystemPointer> coordSysBranch1;
std::vector<CoordinateSystemPointer> coordSysBranch2;
// Scope temp and temp2
{
CoordinateSystemPointer temp = CoordinateSystem::New();
temp->SetLogger( logger );
temp->RequestSetTransformAndParent(identity, root);
coordSysBranch1.push_back(temp);
CoordinateSystemPointer temp2 = CoordinateSystem::New();
temp2->SetLogger( logger );
temp2->RequestSetTransformAndParent(identity, root);
coordSysBranch2.push_back(temp2);
}
for (int i = 1; i < depth; i++)
{
CoordinateSystemPointer temp = CoordinateSystem::New();
temp->SetLogger( logger );
temp->RequestSetTransformAndParent(identity, coordSysBranch1[i-1]);
coordSysBranch1.push_back(temp);
CoordinateSystemPointer temp2 = CoordinateSystem::New();
temp2->SetLogger( logger );
temp2->RequestSetTransformAndParent(identity,coordSysBranch2[i-1]);
coordSysBranch2.push_back(temp2);
}
CoordinateSystemPointer leaf1 = coordSysBranch1[depth-1];
CoordinateSystemPointer leaf2 = coordSysBranch2[depth-1];
itk::TimeProbe probe1;
itk::TimeProbe probe2;
for (int j = 0; j < numIters; j++)
{
probe1.Start();
leaf1->RequestComputeTransformTo(leaf2);
probe1.Stop();
probe2.Start();
leaf2->RequestComputeTransformTo(leaf1);
probe2.Stop();
}
std::cout << "Probe1 [leaf1->RequestComputeTransformTo(leaf2)] : Starts = "
<< probe1.GetNumberOfStarts()
<< " Stops = "
<< probe1.GetNumberOfStops()
<< " Mean time = "
<< probe1.GetMeanTime() << std::endl;
std::cout << "Probe2 [leaf2->RequestComputeTransformTo(leaf1)] : Starts = "
<< probe2.GetNumberOfStarts()
<< " Stops = "
<< probe2.GetNumberOfStops()
<< " Mean time = "
<< probe2.GetMeanTime() << std::endl;
return EXIT_SUCCESS;
}
|