40 QLabel *label =
new QLabel(
"Filter points that are within given distance of another point.");
41 QLabel *lessThan =
new QLabel(
"Distance to another point is less than");
42 m_lineEdit =
new QLineEdit;
43 QLabel *meters =
new QLabel(
"meters");
44 QLabel *pad =
new QLabel;
47 QGridLayout *gridLayout =
new QGridLayout();
48 gridLayout->addWidget(label, 0, 0, 1, 2);
49 gridLayout->addWidget(lessThan, 1, 0);
50 gridLayout->addWidget(m_lineEdit, 1, 1);
51 gridLayout->addWidget(meters, 1, 2);
52 gridLayout->addWidget(pad, 2, 0);
53 gridLayout->setRowStretch(2, 50);
54 this->setLayout(gridLayout);
81 if (controlNet() == NULL) {
82 QMessageBox::information((
QWidget *)parent(),
83 "Error",
"No points to filter");
88 if (m_lineEdit->text() ==
"") {
89 QMessageBox::information((
QWidget *)parent(),
90 "Error",
"Distance value must be entered");
94 double userEntered = m_lineEdit->text().toDouble();
100 for (
int i = filteredPoints().size() - 1; i >= 0; i--) {
101 ControlPoint &cp1 = *(*controlNet())[filteredPoints()[i]];
113 cm1 = *cp1.GetRefMeasure();
115 int camIndex1 = serialNumberList()->
serialNumberIndex(cm1.GetCubeSerialNumber());
116 cam1 = controlNet()->
Camera(camIndex1);
117 cam1->
SetImage(cm1.GetSample(), cm1.GetLine());
118 sp1 = cam1->GetSurfacePoint();
122 for (
int j = 0; j < controlNet()->
GetNumPoints(); j++) {
123 if (j == filteredPoints()[i]) {
134 cm2 = *cp2.GetRefMeasure();
135 int camIndex2 = serialNumberList()->
serialNumberIndex(cm2.GetCubeSerialNumber());
136 cam2 = controlNet()->
Camera(camIndex2);
137 cam2->
SetImage(cm2.GetSample(), cm2.GetLine());
138 sp2 = cam2->GetSurfacePoint();
141 double dist = sp1.GetDistanceToPoint(sp2,sp1.GetLocalRadius()).meters();
145 if (dist < userEntered) {
146 if (!temp.contains(filteredPoints()[i])) {
147 temp.push_back(filteredPoints()[i]);
155 qSort(temp.begin(), temp.end());
157 filteredPoints() = temp;
160 emit filteredListModified();