diff --git a/Modules/PhotoacousticSimulation/Testing/mitkPhotoacousticVectorTest.cpp b/Modules/PhotoacousticSimulation/Testing/mitkPhotoacousticVectorTest.cpp index e875b55a1a..687d67eea6 100644 --- a/Modules/PhotoacousticSimulation/Testing/mitkPhotoacousticVectorTest.cpp +++ b/Modules/PhotoacousticSimulation/Testing/mitkPhotoacousticVectorTest.cpp @@ -1,278 +1,277 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include #include #include #include "mitkPhotoacousticSmartVector.h" class mitkPhotoacousticVectorTestSuite : public mitk::TestFixture { CPPUNIT_TEST_SUITE(mitkPhotoacousticVectorTestSuite); MITK_TEST(TestNormalizeVector); MITK_TEST(TestRotateVectorZeroDegrees); MITK_TEST(TestRotatedVectorPositiveDegrees); MITK_TEST(TestRotateVectorZeroDegrees); - MITK_TEST(TestRotatedVectorAroundAllAxis); MITK_TEST(TestScaleVector); MITK_TEST(TestCloneVector); CPPUNIT_TEST_SUITE_END(); private: mitk::PhotoacousticSmartVector::Pointer m_TestVector; mitk::PhotoacousticSmartVector::Pointer m_TestReturnVector; const double DIF_VAL = 0.001; const double TWO_PI = 6.283185; public: void setUp() { m_TestVector = mitk::PhotoacousticSmartVector::New(); m_TestReturnVector = mitk::PhotoacousticSmartVector::New(); } void TestNormalizeVector() { std::stringstream output; int a = 2; int b = 3; int c = 4; m_TestVector->SetElement(0,a); m_TestVector->SetElement(1,b); m_TestVector->SetElement(2,c); output << "The vectorlength should be"; output << sqrt(a*a+b*b+c*c); CPPUNIT_ASSERT_EQUAL_MESSAGE( output.str(), sqrt(a*a+b*b+c*c), m_TestVector->GetNorm()); output.flush(); m_TestVector->Normalize(); CPPUNIT_ASSERT_EQUAL_MESSAGE("The vectorlength should be 1.", true, m_TestVector->GetNorm()-1 < DIF_VAL); } void TestRotateVectorZeroDegrees() { int a = 1; int b = 2; int c = 3; double length; m_TestVector->SetElement(0,a); m_TestVector->SetElement(1,b); m_TestVector->SetElement(2,c); length = m_TestVector->GetNorm(); m_TestVector->Rotate(0,0); CPPUNIT_ASSERT_EQUAL_MESSAGE("The vector length should be equal", length, m_TestVector->GetNorm()); CPPUNIT_ASSERT_MESSAGE("The vector value at index0 should be 1.0", m_TestVector->GetElement(0) - 1 < DIF_VAL); CPPUNIT_ASSERT_MESSAGE("The vector value at index1 should be 2.0", m_TestVector->GetElement(1) - 2 < DIF_VAL); CPPUNIT_ASSERT_MESSAGE("The vector value at index2 should be 3.0", m_TestVector->GetElement(2) - 3 < DIF_VAL); } void TestRotatedVectorPositiveDegrees() { MITK_INFO << atan2(0, 0); for(int r = 0; r<10; r++) { for(double phi = 0.1; phi < 3; phi+=0.1) { for(double theta = 0.1; theta < 3; theta+=0.1) { double rotateTheta = 0.1; double rotatePhi = 0.1; m_TestVector->SetElement(0, r * sin(theta) * cos(phi)); m_TestVector->SetElement(1, r * sin(theta) * sin(phi)); m_TestVector->SetElement(2, r * cos(theta)); m_TestVector->Rotate(rotateTheta, rotatePhi); double newTheta = fmod(theta + rotateTheta, TWO_PI); double newPhi = fmod(phi + rotatePhi, TWO_PI); double expectedX = r * sin(newTheta) * cos(newPhi); double expectedY = r * sin(newTheta) * sin(newPhi); double expectedZ = r * cos(newTheta); CPPUNIT_ASSERT_MESSAGE("The vector value at index0 should be " + std::to_string(expectedX) + " but was " + std::to_string(m_TestVector->GetElement(0)) + " at r=" + std::to_string(r) + " phi=" + std::to_string(phi) + " theta=" + std::to_string(theta), m_TestVector->GetElement(0) - expectedX < DIF_VAL); CPPUNIT_ASSERT_MESSAGE("The vector value at index1 should be " + std::to_string(expectedY) + " but was " + std::to_string(m_TestVector->GetElement(0)) + " at r=" + std::to_string(r) + " phi=" + std::to_string(phi) + " theta=" + std::to_string(theta), m_TestVector->GetElement(1) - expectedY < DIF_VAL); CPPUNIT_ASSERT_MESSAGE("The vector value at index2 should be " + std::to_string(expectedZ) + " but was " + std::to_string(m_TestVector->GetElement(0)) + " at r=" + std::to_string(r) + " phi=" + std::to_string(phi) + " theta=" + std::to_string(theta), m_TestVector->GetElement(2) - expectedZ < DIF_VAL); } } } } void TestRotatedVectorNegativeDegrees() { for(int r = 0; r<10; r++) { for(double phi = -0.1; phi > -3; phi-=0.1) { for(double theta = -0.1; theta > -3; theta-=0.1) { double rotateTheta = -0.1; double rotatePhi = -0.1; m_TestVector->SetElement(0, r * sin(theta) * cos(phi)); m_TestVector->SetElement(1, r * sin(theta) * sin(phi)); m_TestVector->SetElement(2, r * cos(theta)); m_TestVector->Rotate(rotateTheta, rotatePhi); double newTheta = fmod(theta + rotateTheta, TWO_PI); double newPhi = fmod(phi + rotatePhi, TWO_PI); double expectedX = r * sin(newTheta) * cos(newPhi); double expectedY = r * sin(newTheta) * sin(newPhi); double expectedZ = r * cos(newTheta); CPPUNIT_ASSERT_MESSAGE("The vector value at index0 should be " + std::to_string(expectedX) + " but was " + std::to_string(m_TestVector->GetElement(0)) + " at r=" + std::to_string(r) + " phi=" + std::to_string(phi) + " theta=" + std::to_string(theta), m_TestVector->GetElement(0) - expectedX < DIF_VAL); CPPUNIT_ASSERT_MESSAGE("The vector value at index1 should be " + std::to_string(expectedY) + " but was " + std::to_string(m_TestVector->GetElement(0)) + " at r=" + std::to_string(r) + " phi=" + std::to_string(phi) + " theta=" + std::to_string(theta), m_TestVector->GetElement(1) - expectedY < DIF_VAL); CPPUNIT_ASSERT_MESSAGE("The vector value at index2 should be " + std::to_string(expectedZ) + " but was " + std::to_string(m_TestVector->GetElement(0)) + " at r=" + std::to_string(r) + " phi=" + std::to_string(phi) + " theta=" + std::to_string(theta), m_TestVector->GetElement(2) - expectedZ < DIF_VAL); } } } } void TestScaleVector() { double a = 1.0; double b = 2.0; double c = 3.0; double length; for (double testFactor = -2.0; testFactor<=2.0; testFactor+=0.3) { double potElement0Fctr; double potElement1Fctr; double potElement2Fctr; double testLength; std::stringstream output; m_TestVector->SetElement(0,a); m_TestVector->SetElement(1,b); m_TestVector->SetElement(2,c); length = m_TestVector->GetNorm(); potElement0Fctr = (m_TestVector->GetElement(0)*testFactor)*(m_TestVector->GetElement(0)*testFactor); potElement1Fctr = (m_TestVector->GetElement(1)*testFactor)*(m_TestVector->GetElement(1)*testFactor); potElement2Fctr = (m_TestVector->GetElement(2)*testFactor)*(m_TestVector->GetElement(2)*testFactor); testLength = sqrt(potElement0Fctr + potElement1Fctr + potElement2Fctr); m_TestVector->Scale(testFactor); CPPUNIT_ASSERT_EQUAL_MESSAGE("The vector length should not be equal", sqrt(potElement0Fctr + potElement1Fctr + potElement2Fctr), m_TestVector->GetNorm()); output << "The vector value at index0 should be"; output << a*testFactor; CPPUNIT_ASSERT_EQUAL_MESSAGE( output.str(), a*testFactor, m_TestVector->GetElement(0)); output.flush(); output << "The vector value at index1 should be"; output << b*testFactor; CPPUNIT_ASSERT_EQUAL_MESSAGE( output.str(), b*testFactor, m_TestVector->GetElement(1)); output.flush(); output << "The vector value at index2 should be"; output << c*testFactor; CPPUNIT_ASSERT_EQUAL_MESSAGE( output.str(), c*testFactor, m_TestVector->GetElement(2)); output.flush(); } } void TestCloneVector() { int a = 1; int b = 2; int c = 3; m_TestVector->SetElement(0,a); m_TestVector->SetElement(1,b); m_TestVector->SetElement(2,c); m_TestReturnVector = m_TestVector->Clone(); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The vector length should be equal",(m_TestVector->GetNorm()),m_TestReturnVector->GetNorm()); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The vector value at index0 should be equal", m_TestVector->GetElement(0), m_TestReturnVector->GetElement(0)); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The vector value at index1 should be equal", m_TestVector->GetElement(1), m_TestReturnVector->GetElement(1)); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The vector value at index2 should be equal", m_TestVector->GetElement(2), m_TestReturnVector->GetElement(2)); m_TestReturnVector->Rotate(M_PI/4,M_PI/4); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The vector value at index0 should be not equal", true, m_TestVector->GetElement(0)!= m_TestReturnVector->GetElement(0)); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The vector value at index0 should be not equal", true, m_TestVector->GetElement(1)!= m_TestReturnVector->GetElement(1)); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The vector value at index0 should be not equal", true, m_TestVector->GetElement(2)!= m_TestReturnVector->GetElement(2)); for(double testFactor = -2.0; testFactor<=2.0; testFactor+=0.3) { m_TestReturnVector->Scale(testFactor); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The vector value at index0 should be not equal", true, m_TestVector->GetElement(0)!= m_TestReturnVector->GetElement(0)); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The vector value at index0 should be not equal", true, m_TestVector->GetElement(1)!= m_TestReturnVector->GetElement(1)); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The vector value at index0 should be not equal", true, m_TestVector->GetElement(2)!= m_TestReturnVector->GetElement(2)); } } void tearDown() { m_TestVector = nullptr; m_TestReturnVector = nullptr; } }; MITK_TEST_SUITE_REGISTRATION(mitkPhotoacousticVector) diff --git a/Plugins/org.mitk.gui.qt.photoacousticsimulation/documentation/UserManual/Manual.dox b/Plugins/org.mitk.gui.qt.photoacousticsimulation/documentation/UserManual/Manual.dox index 2d02cfee33..e9e31e8451 100644 --- a/Plugins/org.mitk.gui.qt.photoacousticsimulation/documentation/UserManual/Manual.dox +++ b/Plugins/org.mitk.gui.qt.photoacousticsimulation/documentation/UserManual/Manual.dox @@ -1,17 +1,12 @@ /** -\page org_mitk_gui_qt_photoacousticsimulation The Photoacousticsimulation +\page org_mitk_gui_qt_photoacousticsimulation Photoacoustic Tissue Generator -\imageMacro{icon.png,"Icon of Photoacousticsimulation",2.00} +\imageMacro{icon.png,"Icon of Photoacousticsimulation", 2.00} \tableofcontents \section org_mitk_gui_qt_photoacousticsimulationOverview Overview -Describe the features of your awesome plugin here -
    -
  • Increases productivity -
  • Creates beautiful images -
  • Generates PhD thesis -
  • Brings world peace -
+ +TODO Describe this!! */ diff --git a/Plugins/org.mitk.gui.qt.photoacousticsimulation/documentation/UserManual/icon.xpm b/Plugins/org.mitk.gui.qt.photoacousticsimulation/documentation/UserManual/icon.xpm index 9057c20bc6..d6b601c0af 100644 --- a/Plugins/org.mitk.gui.qt.photoacousticsimulation/documentation/UserManual/icon.xpm +++ b/Plugins/org.mitk.gui.qt.photoacousticsimulation/documentation/UserManual/icon.xpm @@ -1,21 +1,203 @@ /* XPM */ -static const char * icon_xpm[] = { -"16 16 2 1", -" c #FF0000", -". c #000000", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" "}; +static char * icon_xpm[] = { +"128 128 72 1", +" c None", +". c #484848", +"+ c #2E2E2E", +"@ c #272727", +"# c #242424", +"$ c #202020", +"% c #171717", +"& c #1C1C1C", +"* c #1A1A1A", +"= c #191919", +"- c #222222", +"; c #292929", +"> c #404040", +", c #313131", +"' c #1B1B1B", +") c #0E0E0E", +"! c #070707", +"~ c #000000", +"{ c #0A0A0A", +"] c #111111", +"^ c #282828", +"/ c #2D2D2D", +"( c #050505", +"_ c #010101", +": c #0D0D0D", +"< c #151515", +"[ c #1E1E1E", +"} c #080808", +"| c #030303", +"1 c #020202", +"2 c #1D1D1D", +"3 c #0C0C0C", +"4 c #2F2F2F", +"5 c #181818", +"6 c #161616", +"7 c #232323", +"8 c #262626", +"9 c #212121", +"0 c #121212", +"a c #040404", +"b c #323232", +"c c #252525", +"d c #0B0B0B", +"e c #3C3C3C", +"f c #131313", +"g c #090909", +"h c #1F1F1F", +"i c #060606", +"j c #2C2C2C", +"k c #141414", +"l c #3A3A3A", +"m c #2A2A2A", +"n c #333333", +"o c #3B3B3B", +"p c #3D3D3D", +"q c #101010", +"r c #373737", +"s c #0F0F0F", +"t c #3E3E3E", +"u c #343434", +"v c #353535", +"w c #414141", +"x c #383838", +"y c #303030", +"z c #393939", +"A c #424242", +"B c #2B2B2B", +"C c #454545", +"D c #3F3F3F", +"E c #4D4D4D", +"F c #4B4B4B", +"G c #363636", +" ", +" .+@#$%&*=-;> ", +" ,')!~~~~~~~~~~~~~{]^ ", +" /*](~~~~~~~~~__~~~~_~~~~_:<[ ", +" ^}|~_~~~~___~~~__~~~_~~_~~~~~11* ", +" ^!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2 ", +" '3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(% ", +" 4!_~~~_~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~_~~~15 ", +" -~~~~_~~~~~~~~_(!}65&[7892&0}}a_~~~~~~~~~~~~~{b ", +" +)~~~~~~_~~~~~3'$ c$d~~~~~~~~~~~~~6 ", +" c~~~~~~~~~~~1[e ef_~~~~~~~~~~~g ", +" h~~_~~~~~~~}2 f!_~~~~~~~~~1 ", +" %_~~~~~~~~38 -i~~_~~~~~~(j ", +" k~~~~~~~~~7 [~~_~~~~~~_b ", +" =~~~~~~~_3l @g~~~~~~~~~m ", +" ;1~_~~~~~9 &_~~~~~~~( ", +" e_~~~~~~1n b1~~~~~~~a ", +" i~~~~~~{o p{~_~~~~~} ", +" f~~~~~~: q~~~~~_~k ", +" ,~~~~~~: q~~~~~_~/ ", +" !~~~~~g 0~~~~~~i ", +" <~~~~~|o :~~~~~~6 ", +" |~~~~~r (~~~~~1 ", +" 6~~~~~& g~~~~~] ", +" (~~~~! 4a_~~_1r ", +" 2~~~~~j h~~~~~s ", +" ~~~~~2 k~~~~~t ", +" *~~~~{ g~~~~s ", +" a~~~~7 8_~_~| ", +" a~~~! 3~~__2 ", +" *~~~~2 u~~~~!q@ ", +" q~~~~~1 _~_~~_( ", +" i~_~~~~, [~~~~~_| ", +" a~~~~~~& &~~~~_~18 ", +" c_~~~~~~v >~~~~~_~5 ", +" h_~~~~~~ |_~~_~~f ", +" k_~__~~) 5~~_~~_( ", +" d~~_~~~h ^~_~~~~1 ", +" 51_~~~~, w~~~~~|7 ", +" %~~{q) ^9/{~! ", +" d~| =~( ", +" i~} _11_1_ '~a ", +" !~d ~~~~~~~~~~~~~~~~~ ;_| ", +" !~] ~~~~~~~~~~~~~~~~~~~~~ /11 ", +" i~< i~~~~~~~ ~~~~~~~~ x11# ", +" i~5 ~~~~~~ ~~~~~~ w11 ", +" |_* ~~~~~~~ ~~~~~~ t11 ", +" a~' ~~~~~~ ~~~~ y11+ ", +" 9-y1~* z@ ~~~~~ ~~~a 8:<-u j1~3}i7 ", +" $~~~~~5 61~~_# ~~~~~ ~~~~ 6~~~~~% h_~~_~d ", +" 6~_~_~5 f~~~_~~w ~~~~ ~~~~ ~~~~~~_n '~~~~~} ", +" =~~_~_5 i~~~~~~4 ~~~~ ~~~~ A~~~~~~~[ %~___~) ", +" *~~~~~5 b@'~__~~~~7 ~~~~ ~~~~ ;~~~~~~~~~i9A<~~_~~s ", +" =~~~~~{'}~~~~~~~~~~[ ~~~~ ~~~ 8~~~~~~~~~~~~~_~_~~f ", +" &~~~~~~~_~~~~~~~~~~k ~~~ ~~~ [~~~~_~~~~~_~~~~~~~& ", +" c~~~~~~~~~~~~~~~~~~| ~~~~ ~~~ k~~~~~~~~~~~~~~~~~~2 ", +" B_~~~~~~~~~~~~~~~~~~ ~~~ ~~~ 3~~~~~~~~~~~~~~~~~~* ", +" B|~~~~~~~~~~~~~~~~~~ ~~~ ~~~ |~~~~~~~~~~~~~~~~~~[ ", +" a~~~~~~~~~~~~~~~~~~e~~~ ~~~ ~~~~~~~~~~~~~~~~~~~[ ", +" [_~~~~~~~~~~~~~~~~~~$|~~ ~~m~~~~~~~~~~~~~~~~~~~} ", +" |~~~~~~~~~~~~~~~~~~~ka~ ~~-~~~~~~~~~~~~~~~~_~_~* ", +" h~_~~~~~~~~~~~~~~~~~~f}~ ~|9~~~~~~~~~~~~~~~~~~~~~ ", +" |~~~~~~~~~~~~~~~~~~~~0)~ ~(*~~~~~~~~~~~~~~~~~~~~~= ", +" ^~~~~~~~~~~~~~~~~~~~~~qs_ ~if~~~~~~~~~~~~~~~~~~~~~} ", +" <~~~~~~~~~~~~~~~~~~~~_d3_ ~!q~~~~~~~~~~~~~~~~~~~~~! ", +" ]~~~~~~~~~~~~~~~~~~~~~{{_ ~~ ~~_~~~_~~~ ~{]~~~~~~~~~~~~~~~~~~~~~( ", +" h~~~~~~~~~~~~~~~~~~~__{s1 ~~~~~~~~~~~~~~~~~~~~~~~ ~:]~~~~~~~~~~~~~~~~~~~~~i ", +" &~~~~~~~~~~~~~~~~~~~~_i=~ ~~~~~~~~~~~1 _~~ _~~~~ _)0~~~~~~~~~~~~~~~~~~~~~i ", +" 2~~~~~~~~~~~~~~~~~~~~_|*~ ~~~ ~~ ~~ ~~~ _d:_~~~~~~~~~~~~~~~~~~~~} ", +" 9~~~~~~~~~~~~~~~~~~~~~~%_ ~~ ~~ ~~ ~~ _{d_~~~~~~~~~~~~~~~~~~~~{ ", +" n~~~~~~~~~~~~~~~~~~~~~~'~ ~~~ ~~ ~~~ ~~~ _fg~~~~~~~~~~~~~~~~~~~~~s ", +" C~~~~~~~~~~~~~~~~~~~~~~#~ ~~ ~~ ~~ ~~ ~[i_~~~~~~~~~~~~~~~~~~~~k ", +" D~~~~~~~~~~~~~~~~~~~~~~'(_ ~~ ~~ ~~ ~~ ~2~~~~~~~~~~~~~~~~~~~~~~k ", +" ~~~~~~~~~~~~~~~~~~~~~~fg~ ~~~ ~~~ ~~ ~~~ ~~*~~~~~~~~~~~~~~~~~~~~~~5 ", +" ~~~~~~~~~~~~~~~~~~~~_~)q~ ~~ ~~ ~~_ ~~ _~9~~~~~~~~~~~~~~~~~~~~~~B ", +" _~~~~~~~~~~~~~~~~~~~~_g&~~ ~~~ ~~~~~~~~ ~~~ _~7~__~~~~~~~~~~~~~~~~~~~l ", +" g~~~~~~~~~~~~~~~~~~~~_~8~~ ~~~ ~~~~~~~~ ~~ ~~i7~~~~~~~~~~~~~~~~~~~~~~> ", +" %~~~~~~~~~~~~~~~~~~~__~9~~~ ~~ ~~~~~~~ ~~~ ~~~ ]~~~~~~~~~~~~~~~~~~~~~~ ", +" '~~~~~~~~~~~~~~~~~~~~~~#~~~ ~~~ ~~ ~1 ~~~ ~~~ g~~~~~~~~~~~~~~~~~~~~~1 ", +" #~~~~~~~~~~~~~~~~~~~__~B|~~~ ~~~ ~~~~1 ~~~ ~~~ i~~~~~~~~~~~~~~~~~~~~~{ ", +" v~~~~~~~~~~~~~~~~~~~__~9 ~~~ ~~ ~~~~1 ~~~ ~~~ _~~~~~~~~~~~~~~~~~~~~~0 ", +" E~~~~~~~~~~~~~~~~~~~~~~{ ~~~ ~~~ ~~~~ ~~ ~~~~ F~~~~~~~~~~~~~~~~~~~~~~$ ", +" i_~~~~~~~~~~~~~~~~~~~~( ~~~ ~~ ~~~~ ~~~ ~~~ v~~~~~~~~~~~~~~~~~~~~~~G ", +" %~~~~~~~~~~~~~~~~~~~~~| ~~~~ ~~_~~~~1~~ ~~~ 8~_~~~~~~~~~~~~~~~~~~~{ ", +" 7~~~~~~~~~~~~~~~~~~~~~~ ~~~ _~~~~~~_~~ ~~~ 7~~~~~~~~~~~~~~~~~~_~_h ", +" g~~~~~~~~~~~~~~~~~~~~~4 ~~~~ ~~~~~~~~~~ ~~~ 2~_~~~~~~~~~~~~~~~~~~i ", +" y~_~~~~~~~~~~~~~~~~~~~9 ~~~ ~~~~~~~~~~_ ~~~ 0~~~~~~~~~~~~~~~~~~_~@ ", +" c~~~~~~~~~~~~~~~~~~~~9 ~~~~ ~~~ ~~_ ~~~ }~~~~~~~~~~~~~~~~~~~2 ", +" :~~~~~~~~~~~~~~~~~~~[ ~~~ ~~ __~ ~~_ ~~~ _~~~~~~~~~~~~~~~~~~~9 ", +" <~~_~~~~~~~~~~~~~~~~f ~~~~ ~~ ~i ~ ~~_ ~~~ _~~~~~~~~~_~~~~_~_~~~ ", +" 6~~__~__~~~~~~~~~~~~s ~~~ ~~~~~|~~~~ ~~~ 1~~~~~~~~~~_~~~1ki_3 ", +" 0sh2:~~~~~~~~~~~~~~: ~~~ ~~~~~~~~~~ ~~~ b_~~~~~~~~~~~~{5 7 ", +" v2!~~~~~~~~~~~3 ~~~ ~~__~~~~~~ ~~~ ~~~~~~~dsds#u ", +" >y+l'~~~~~_$ ~~~ ~~1 ~~~_~~ ~~ #___~~s ", +" 6diq09 ~~~ ~~1 ~ ~ ~~ ~~~ #$=[ ", +" _~~ ~~1 ~ ~ ~~ _~~ ", +" ~~ ~~_ ~ ~1~~ ~~_ ", +" ~~ ~~~ ~ ~ ~~ ~~_ ", +" ~~ ~~~ ~ ~ ~~ ~~_ ", +" ~~_ ~~~ ~ ~ ~~ ~~~ ", +" ~~~ _~~~ ~ ~ ~~ ~~~ ", +" ~~~~ 1~~ ~ ~ ~~ ~~~~ ", +" ~~~~~~~~~~_~~~~~~~_~~~~~~~ ", +" ~~~~~~~~~~~~~~~~~~~~~~~~~~ ", +" ~~~~~~~~~~~~~~~~~~~~~~_1 ", +" 6~~~~~~~~~~~~~~~~~~~~q ", +" ]~~~~~~~~~~~~~~~~~~~~q ", +" ~~~~~~~~~~~~~~~~~~~~~d ", +" B~~~~~~~~~~~~~~~~~~~~d ", +" #~~~~~~~~~~~~~~~~~~~_6 ", +" _~~~~~~~~~~~~~~~~~~~| ", +" _~~~~~~~~~~~~~~~~~~_6 ", +" ^_~~~~~~~~~~~~~~~~~~_% ", +" |~~~~~~~~~~~~_1~1~~~1 ", +" 1~~~~~~~~~~~~~~~~~~_& ", +" @_~~~~~~~~~~~~~~~~~~_% ", +" |~~~~~~~~~~~~~~~~~~~_ ", +" dggggggggggggggggggg% ", +" #_~~~~~~~~~~~~~~~~~~~' ", +" =~~~~~~~~~~~~~~__~~~1 ", +" f~~~~~~~~~~~~:a(1~~{ ", +" *~~~~~~~~~~~~~~~~] ", +" 71~~~~~~~~~~~~~q ", +" [_~~~~~~~~~~_9 ", +" 7~~~~~~~~~1h ", +" @~~~~~~~~0 ", +" j##h1]7B ", +" "}; diff --git a/Plugins/org.mitk.gui.qt.photoacousticsimulation/plugin.xml b/Plugins/org.mitk.gui.qt.photoacousticsimulation/plugin.xml index f2f7c5e572..c582f965b0 100644 --- a/Plugins/org.mitk.gui.qt.photoacousticsimulation/plugin.xml +++ b/Plugins/org.mitk.gui.qt.photoacousticsimulation/plugin.xml @@ -1,11 +1,11 @@ diff --git a/Plugins/org.mitk.gui.qt.photoacousticsimulation/src/internal/PASimulatorControls.ui b/Plugins/org.mitk.gui.qt.photoacousticsimulation/src/internal/PASimulatorControls.ui index b472de41b5..7bb3e4111b 100644 --- a/Plugins/org.mitk.gui.qt.photoacousticsimulation/src/internal/PASimulatorControls.ui +++ b/Plugins/org.mitk.gui.qt.photoacousticsimulation/src/internal/PASimulatorControls.ui @@ -1,4881 +1,4881 @@ PASimulatorControls 0 0 433 655 0 0 Qt::NoContextMenu QmitkTemplate :/org.mitk.gui.qt.photoacousticsimulation/resources/icon.xpm:/org.mitk.gui.qt.photoacousticsimulation/resources/icon.xpm 0 0 415 600 - 3 + 0 Generator 10 10 391 581 0 0 391 581 0 0 0 0 75 true Volume parameters 0 0 0 25 16777215 25 Tissue name: 0 0 0 25 16777215 25 Size x: 0 0 0 25 16777215 25 50 false Spacing: 0 0 0 25 16777215 25 PhotoacousticTissue 0 0 0 25 16777215 25 1 9999 70 0 0 0 25 16777215 25 y: 0 0 0 25 16777215 25 9999 100 0 0 0 25 16777215 25 z: 0 0 0 25 16777215 25 9999 70 0 0 0 25 16777215 25 voxels Qt::Horizontal 40 20 0 0 0 25 16777215 25 2 0.010000000000000 0.060000000000000 0 0 0 25 16777215 25 cm Qt::Horizontal 40 20 0 0 0 25 16777215 25 Randomize: 0 0 0 25 16777215 25 Partial volume effects: 0 0 0 25 16777215 25 Custom seed: 0 0 0 25 16777215 25 true true 0 0 0 25 16777215 25 true 0 0 0 25 16777215 25 0 0 0 25 16777215 25 sigma: 0 0 0 25 16777215 25 0 100.000000000000000 0.010000000000000 2.000000000000000 0 0 0 25 16777215 25 % Qt::Horizontal 40 20 0 0 0 25 16777215 25 sigma: 0 0 0 25 16777215 25 10.000000000000000 0.100000000000000 1.000000000000000 0 0 0 25 16777215 25 voxels Qt::Horizontal 40 20 0 0 0 25 16777215 25 999999999 170704057 Qt::Horizontal 40 20 Generate batch file output: false Number of volumes to generate: 1 9999999 1 Qt::Horizontal 40 20 Save generated tissue path: 0 0 50 0 50 16777215 open Path to MitkMcxyz binary: 0 0 50 0 50 16777215 open Number of Photons (x1000): 0 999999999 1 100000 0 0 Generate Tissue Qt::Vertical 20 40 Tissue 10 10 391 581 0 0 391 581 0 0 0 0 0 0 0 25 16777215 25 11 75 false true false Air Parameters 0 0 0 25 16777215 25 50 false Thickness: 0 0 0 10 16777215 10 11 75 true 0 0 0 25 16777215 25 75 false true false Background Parameters 0 0 0 25 16777215 25 Absorption coefficient: 0 0 0 25 16777215 25 Scattering coefficient: 0 0 0 25 16777215 25 Anisotropy facor: 0 0 0 10 16777215 10 11 75 true 0 0 0 25 16777215 25 75 false true false Skin Parameters 0 0 0 25 16777215 25 Thickness: 0 0 0 25 16777215 25 Absorption coefficient: 0 0 0 25 16777215 25 Scattering coefficient: 0 0 0 25 16777215 25 Anisotropy facor: 0 0 0 10 16777215 10 11 75 true 0 0 0 25 16777215 25 75 false true false Fat Parameters 0 0 0 25 16777215 25 Anisotropy facor: 0 0 0 25 16777215 25 Scattering coefficient: 0 0 0 25 16777215 25 Absorption coefficient: 0 0 0 25 16777215 25 Body fat percentage: 0 0 0 25 16777215 25 11 75 true 0 0 0 25 16777215 25 0.100000000000000 1.800000000000000 0 0 0 25 16777215 25 mm Qt::Horizontal 40 20 0 0 0 10 16777215 10 11 75 true 0 0 0 25 16777215 25 75 true 0 0 0 25 16777215 25 0.100000000000000 0.100000000000000 0 0 0 25 16777215 25 per cm Qt::Horizontal 40 20 0 0 0 25 16777215 25 1000.000000000000000 15.000000000000000 0 0 0 25 16777215 25 per cm Qt::Horizontal 40 20 0 0 0 25 16777215 25 1.000000000000000 0.010000000000000 0.900000000000000 Qt::Horizontal 40 20 0 0 0 10 16777215 10 11 75 true 0 0 0 25 16777215 25 75 true 0 0 0 25 16777215 25 0.100000000000000 0.400000000000000 0 0 0 25 16777215 25 mm Qt::Horizontal 40 20 0 0 0 25 16777215 25 0.100000000000000 3.000000000000000 0 0 0 25 16777215 25 per cm Qt::Horizontal 40 20 0 0 0 25 16777215 25 1000.000000000000000 20.000000000000000 0 0 0 25 16777215 25 per cm Qt::Horizontal 40 20 0 0 0 25 16777215 25 1.000000000000000 0.010000000000000 0.900000000000000 Qt::Horizontal 40 20 0 0 0 10 16777215 10 11 75 true 0 0 0 25 16777215 25 75 true 0 0 0 25 16777215 25 0 0.100000000000000 10.000000000000000 0 0 0 25 16777215 25 % Qt::Horizontal 40 20 0 0 0 25 16777215 25 0.100000000000000 0.200000000000000 0 0 0 25 16777215 25 per cm Qt::Horizontal 40 20 0 0 0 25 16777215 25 1000.000000000000000 18.000000000000000 0 0 0 25 16777215 25 per cm Qt::Horizontal 40 20 0 0 0 25 16777215 25 1.000000000000000 0.010000000000000 0.900000000000000 Qt::Horizontal 40 20 Qt::Vertical 20 40 Vessels 10 10 391 581 0 0 391 581 0 0 0 0 75 true Vessel Parameters 0 25 16777215 25 The number of bloos vessels to generate Count: Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter 0 25 16777215 25 The radius of the blood vessels in mm Radius: 0 25 16777215 25 the absorption coefficient refers to the number of absorption events per centimeter. Absorption: 0 25 16777215 25 The reduced scattering coefficient. It refers to the amount of scattering events per centimeter. Scattering: 0 25 16777215 25 The anisotropy factor is the probability of a photon to not change its direction after a scattering event. Anisotropy factor: 0 25 16777215 25 The bifurcation frequency determines how often the vessel should bifurcate. The vessel will bifurcate after meandering a mean of the specified amount of voxels. When given a value of 0, the vessel will never bifurcate. Bifurcation frequency: 0 25 16777215 25 The curvedness it a setting to determine how much the vessel is allowed to bend during creation. A value of 0 refers to no bending at all and a value of 5 is the maximum. Curvedness: 0 25 16777215 25 The minimum number of blood vessels 1 1 0 25 16777215 25 to 0 25 16777215 25 The maximum number of blood vessels 7 0 25 16777215 25 Vessels Qt::Horizontal QSizePolicy::Expanding 60 20 0 25 16777215 25 The minimum radius 0.600000000000000 0 25 16777215 25 to 0 25 16777215 25 The maximum radius 5.000000000000000 0 25 16777215 25 mm Qt::Horizontal QSizePolicy::Expanding 60 20 0 25 16777215 25 The minimum absorption coefficient 2.000000000000000 0 25 16777215 25 to 0 25 16777215 25 The maximum absorption coefficient 10.000000000000000 0 25 16777215 25 per cm Qt::Horizontal QSizePolicy::Expanding 60 20 0 25 16777215 25 The minimum scattering 2 0.000000000000000 999.000000000000000 1.000000000000000 15.000000000000000 0 25 16777215 25 to 0 25 16777215 25 The minimum scattering 2 0.000000000000000 999.000000000000000 1.000000000000000 15.000000000000000 0 25 16777215 25 per cm Qt::Horizontal QSizePolicy::Expanding 60 20 0 25 16777215 25 The minimum anisotropy factor 2 0.000000000000000 1.000000000000000 0.100000000000000 0.900000000000000 0 25 16777215 25 to 0 25 16777215 25 The maximum anisotropy factor 2 0.000000000000000 1.000000000000000 0.100000000000000 0.900000000000000 Qt::Horizontal QSizePolicy::Expanding 60 20 0 25 16777215 25 The bifurcation frequency determines how often the vessel should bifurcate. The vessel will bifurcate after meandering a mean of the specified amount of voxels. When given a value of 0, the vessel will never bifurcate. 0 1.000000000000000 999999999.000000000000000 1.000000000000000 50.000000000000000 0 25 16777215 25 voxels Qt::Horizontal QSizePolicy::Expanding 60 20 0 25 16777215 25 The minimal curvedness of the vessel. A value of 0 refers to no bending at all and a value of 5 is the maximum. 5.000000000000000 0.100000000000000 0 25 16777215 25 to 0 25 16777215 25 The maximal curvedness of the vessel. A value of 0 refers to no bending at all and a value of 5 is the maximum. 5.000000000000000 0.010000000000000 1.000000000000000 0 25 16777215 25 units Qt::Horizontal QSizePolicy::Expanding 60 20 Qt::Vertical 20 40 Monte Carlo 10 10 391 581 0 0 391 581 0 0 0 0 75 true Monte Carlo Parameters 0 25 16777215 25 50 false General: 0 0 0 25 16777215 25 Mcflag: 0 0 0 25 16777215 25 Launchflag: 0 0 0 25 16777215 25 Boundaryflag: 0 0 0 25 16777215 25 1 4 Qt::Horizontal 40 20 0 0 0 25 16777215 25 0 0 Qt::Horizontal 40 20 0 0 0 25 16777215 25 1 2 Qt::Horizontal 40 20 0 25 16777215 25 50 false Initial launch point: 0 25 16777215 25 x 0 25 16777215 25 4 1000000.000000000000000 0.000000000000000 0 25 16777215 25 y 0 25 16777215 25 4 1000000.000000000000000 0.000000000000000 0 25 16777215 25 z 0 25 16777215 25 4 1000000.000000000000000 0.000000000000000 Qt::Horizontal 40 20 0 25 16777215 25 50 false Focus point: 0 25 16777215 25 x 0 25 16777215 25 4 1000000.000000000000000 0.000000000000000 0 25 16777215 25 y 0 25 16777215 25 4 1000000.000000000000000 0.000000000000000 0 25 16777215 25 z 0 25 16777215 25 4 1000000.000000000000000 0.000000000000000 Qt::Horizontal 40 20 0 25 16777215 25 50 false Trajectory vector: 0 25 16777215 25 x 0 25 16777215 25 4 1000000.000000000000000 0.000000000000000 0 25 16777215 25 y 0 25 16777215 25 4 1000000.000000000000000 0.342000000000000 0 25 16777215 25 z 0 25 16777215 25 4 1000000.000000000000000 0.939700000000000 Qt::Horizontal 40 20 radius: waist: 4 1000.000000000000000 0.500000000000000 Qt::Horizontal 40 20 4 1000.000000000000000 0.010000000000000 Qt::Horizontal 40 20 Qt::Vertical 20 40 Wavelength 10 10 391 581 0 0 391 581 Qt::NoContextMenu 0 0 0 0 75 true Adjust physical properties by wavelength false 16777215 150 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This widget enables the adjustment of the physical properties of the tissue according to a selected wavelength of the light and the oxygen saturation of the blood.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The algorithm and measurements were provided by the publication <span style=" font-weight:600;">Optical properties of biological tissues: a review </span>by Steve L. Jacques.</p></body></html> 0 0 0 25 16777215 25 Wavelength: 0 0 0 25 16777215 25 Vessel oxygen saturation: 0 0 0 25 16777215 25 0 300.000000000000000 1000.000000000000000 650.000000000000000 Qt::Horizontal 40 20 0 0 0 25 16777215 25 0 100.000000000000000 75.000000000000000 0 0 0 25 16777215 25 % Qt::Horizontal 40 20 Adjust tissue properties Qt::Vertical 20 40