Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "mitkLineMapper2D.h"
00020 #include "mitkPointSet.h"
00021 #include "mitkBaseRenderer.h"
00022 #include "mitkPlaneGeometry.h"
00023 #include "mitkColorProperty.h"
00024 #include "mitkProperties.h"
00025 #include <vtkLinearTransform.h>
00026 #include "mitkPointSet.h"
00027 #include "mitkGL.h"
00028
00029 mitk::LineMapper2D::LineMapper2D()
00030 : mitk::PointSetGLMapper2D()
00031 {
00032
00033 }
00034
00035 mitk::LineMapper2D::~LineMapper2D()
00036 {
00037 }
00038
00039 const mitk::PointSet *mitk::LineMapper2D::GetInput(void)
00040 {
00041 return static_cast<const mitk::PointSet * > ( GetData() );
00042 }
00043
00044 void mitk::LineMapper2D::Paint(mitk::BaseRenderer * renderer)
00045 {
00046 if(IsVisible(renderer)==false)
00047 return;
00048
00049 bool updateNeccesary = true;
00050
00051 if (updateNeccesary)
00052 {
00053 mitk::PointSet::Pointer input = const_cast<mitk::PointSet*>(this->GetInput());
00054 mitk::DisplayGeometry::Pointer displayGeometry = renderer->GetDisplayGeometry();
00055 assert(displayGeometry.IsNotNull());
00056
00057
00058 ApplyProperties(renderer);
00059
00060 vtkLinearTransform* transform = GetDataNode()->GetVtkTransform();
00061
00062
00063 PointSet::DataType::PointsContainerConstIterator it, end;
00064 it = input->GetPointSet()->GetPoints()->Begin();
00065 end = input->GetPointSet()->GetPoints()->End();
00066 if (end!=it)
00067 end--;
00068
00069
00070 PointSet::DataType::PointDataContainerIterator selIt, selItNext;
00071 selIt=input->GetPointSet()->GetPointData()->Begin();
00072
00073 int j=0;
00074 while(it!=end)
00075 {
00076 mitk::Point3D p, q, projected_p, projected_q;
00077 float vtkp[3];
00078 itk2vtk(it->Value(), vtkp);
00079 transform->TransformPoint(vtkp, vtkp);
00080 vtk2itk(vtkp,p);
00081
00082
00083 it++;
00084 itk2vtk(it->Value(), vtkp);
00085 transform->TransformPoint(vtkp, vtkp);
00086 vtk2itk(vtkp,q);
00087 it--;
00088
00089 displayGeometry->Project(p, projected_p);
00090 displayGeometry->Project(q, projected_q);
00091
00092 Vector3D diffp=p-projected_p, diffq=q-projected_q;
00093 if((diffp.GetSquaredNorm()<4.0) &&
00094 (diffq.GetSquaredNorm()<4.0))
00095 {
00096 Point2D p2d, q2d, tmp;
00097
00098 displayGeometry->Map(projected_p, p2d);
00099 displayGeometry->WorldToDisplay(p2d, p2d);
00100 displayGeometry->Map(projected_q, q2d);
00101 displayGeometry->WorldToDisplay(q2d, q2d);
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126 glBegin (GL_LINES);
00127 glVertex2f(p2d[0], p2d[1]);
00128 glVertex2f(q2d[0], q2d[1]);
00129 glEnd ();
00130
00131 }
00132 ++it;
00133 ++selIt;
00134 j++;
00135 }
00136
00137 PointSetGLMapper2D::Paint(renderer);
00138 }
00139 }