Ejemplo n.º 1
0
int main(int argc, char const *argv[])
{
    min_p("int: %d\n", 4);
    min_p("str: %s\n", "mm");
    return 0;
}
Ejemplo n.º 2
0
double KdTree::computeCost (LineSegments &lineSegments, LineSegments::iterator begin, LineSegments::iterator end, Point* p, int splitType)
{
  int TL = 0;
  int TR = 0;
  Parameter PL, PR;

  Parameter min_p((double)999999);
  Parameter max_p((double)-999999);

  if (splitType == 0) {
    for (LineSegments::iterator it = begin; it != end; ++it) {
	  //pl(*it);
      if ((*it)->p0 != p && (*it)->p1 != p && XOrder((*it)->p0, p) == 1 && XOrder((*it)->p1, p) == 1) {
        TL++;
		if ((*it)->p0->getP().getX() < min_p) {
			min_p = (*it)->p0->getP().getX();
		}
		if ((*it)->p1->getP().getX() < min_p) {
			min_p = (*it)->p1->getP().getX();
		}
	  } else if ((*it)->p0 != p && (*it)->p1 != p && XOrder(p, (*it)->p0) == 1 && XOrder(p, (*it)->p1) == 1) {
	    TR++;
		if ((*it)->p0->getP().getX() > max_p) {
			max_p = (*it)->p0->getP().getX();
		}
		if ((*it)->p1->getP().getX() > max_p) {
			max_p = (*it)->p1->getP().getX();
		}
	  } else {
	    TL++;
		TR++;
		if ((*it)->p0->getP().getX() < min_p) {
			min_p = (*it)->p0->getP().getX();
		}
		if ((*it)->p1->getP().getX() < min_p) {
			min_p = (*it)->p1->getP().getX();
		}
		if ((*it)->p0->getP().getX() > max_p) {
			max_p = (*it)->p0->getP().getX();
		}
		if ((*it)->p1->getP().getX() > max_p) {
			max_p = (*it)->p1->getP().getX();
		}
  	  }
    }

	PL = (p->getP().getX() - min_p) / (max_p - min_p);
	PR = (max_p - p->getP().getX()) / (max_p - min_p);
  } else {
    for (LineSegments::iterator it = begin; it != end; ++it) {
      if ((*it)->p0 != p && (*it)->p1 != p && YOrder((*it)->p0, p) == 1 && YOrder((*it)->p1, p) == 1) {
        TL++;
		if ((*it)->p0->getP().getY() < min_p) {
			min_p = (*it)->p0->getP().getY();
		}
		if ((*it)->p1->getP().getY() < min_p) {
			min_p = (*it)->p1->getP().getY();
		}
	  } else if ((*it)->p0 != p && (*it)->p1 != p && YOrder(p, (*it)->p0) == 1 && YOrder(p, (*it)->p1) == 1) {
	    TR++;
		if ((*it)->p0->getP().getY() > max_p) {
			max_p = (*it)->p0->getP().getY();
		}
		if ((*it)->p1->getP().getY() > max_p) {
			max_p = (*it)->p1->getP().getY();
		}
	  } else {
	    TL++;
		TR++;
		if ((*it)->p0->getP().getY() < min_p) {
			min_p = (*it)->p0->getP().getY();
		}
		if ((*it)->p1->getP().getY() < min_p) {
			min_p = (*it)->p1->getP().getY();
		}
		if ((*it)->p0->getP().getY() > max_p) {
			max_p = (*it)->p0->getP().getY();
		}
		if ((*it)->p1->getP().getY() > max_p) {
			max_p = (*it)->p1->getP().getY();
		}
  	  }
    }

	PL = (p->getP().getY() - min_p) / (max_p - min_p);
	PR = (max_p - p->getP().getY()) / (max_p - min_p);
  }

  return log((double)TL) * PL.mid() + log((double)TR) * PR.mid();
}