|
@@ -43,11 +43,33 @@ SLList::SLList (const char* file)
|
|
|
QJsonArray line = lines[i].toArray();
|
|
|
QJsonArray point1 = line[0].toArray();
|
|
|
QJsonArray point2 = line[1].toArray();
|
|
|
- list << StrengthLine(point1[0].toDouble(), point1[1].toDouble(), point2[0].toDouble(), point2[1].toDouble());
|
|
|
+ list << new StrengthLine(point1[0].toDouble(), point1[1].toDouble(), point2[0].toDouble(), point2[1].toDouble());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-std::pair<double, int> SLList::distance(SLList*, QImage*) const
|
|
|
+std::pair<double, int> SLList::distance_avg(SLList* sllist, QImage* img) const
|
|
|
{
|
|
|
- return std::make_pair(1, -1);
|
|
|
+ const SLList *list1 = this, *list2 = sllist;
|
|
|
+ if(size() > sllist->size())
|
|
|
+ {
|
|
|
+ list1 = sllist;
|
|
|
+ list2 = this;
|
|
|
+ }
|
|
|
+
|
|
|
+ double sum = 0;
|
|
|
+ double min;
|
|
|
+
|
|
|
+ for(unsigned int i = 0 ; i < list1->size(); i++)
|
|
|
+ {
|
|
|
+ min = list1->get(i)->distance(list2->get(0), img->width(), img->height());
|
|
|
+
|
|
|
+ for(unsigned int j = 1 ; j < list2->size(); j++)
|
|
|
+ {
|
|
|
+ double temp = list1->get(i)->distance(list2->get(j), img->width(), img->height());
|
|
|
+ if(temp < min)
|
|
|
+ min = temp;
|
|
|
+ }
|
|
|
+ sum += min;
|
|
|
+ }
|
|
|
+ return std::make_pair(sum/list1->size(), size()-sllist->size());
|
|
|
}
|