/// Find best NFA and number of inliers wrt square error threshold in e. OrsaModel::ErrorIndex OrsaModel::bestNFA(const std::vector<ErrorIndex>& e, double loge0, double maxThreshold, const std::vector<float> &logc_n, const std::vector<float> &logc_k) const { const int startIndex = SizeSample(); const double multError = (DistToPoint()? 1.0: 0.5); ErrorIndex bestIndex(std::numeric_limits<double>::infinity(), startIndex, 0); const int n = static_cast<int>( e.size() ); for(int k=startIndex+1; k<=n && e[k-1].error<=maxThreshold; ++k) { double logalpha = logalpha0_[e[k-1].side] + multError*log10(e[k-1].error); ErrorIndex index(loge0+logalpha*(double)(k-startIndex)+logc_n[k]+logc_k[k], k, e[k-1].side); if(index.error < bestIndex.error) bestIndex = index; } return bestIndex; }
bool Plane::PointOnSide(float x, float y, float z) { return DistToPoint(x, y, z) < 0.f; }