Ejemplo n.º 1
0
  Vec2f VertexOrientation2DF0D::operator()(Interface0DIterator& iter) {
    Vec2f A,C;
    Vec2f B(iter->getProjectedX(), iter->getProjectedY());
    if(iter.isBegin())
      A = Vec2f(iter->getProjectedX(), iter->getProjectedY());
    else
      {
	Interface0DIterator previous = iter;
	--previous ;
	A = Vec2f(previous->getProjectedX(), previous->getProjectedY());
      }
    Interface0DIterator next = iter;
    ++next ;
    if(next.isEnd())
      C = Vec2f(iter->getProjectedX(), iter->getProjectedY());
    else
      C = Vec2f(next->getProjectedX(), next->getProjectedY());

    Vec2f AB(B-A);
    if(AB.norm() != 0)
      AB.normalize();
    Vec2f BC(C-B);
    if(BC.norm() != 0)
      BC.normalize();
    Vec2f res (AB + BC);
    if(res.norm() != 0)
      res.normalize();
    return res;
  }
Ejemplo n.º 2
0
int Curvature2DAngleF0D::operator()(Interface0DIterator& iter)
{
	Interface0DIterator tmp1 = iter, tmp2 = iter;
	++tmp2;
	unsigned count = 1;
	while ((!tmp1.isBegin()) && (count < 3)) {
		--tmp1;
		++count;
	}
	while ((!tmp2.isEnd()) && (count < 3)) {
		++tmp2;
		++count;
	}
	if (count < 3) {
		// if we only have 2 vertices
		result = 0;
		return 0;
	}

	Interface0DIterator v = iter;
	if (iter.isBegin())
		++v;
	Interface0DIterator next = v;
	++next;
	if (next.isEnd()) {
		next = v;
		--v;
	}
	Interface0DIterator prev = v;
	--prev;

	Vec2r A(prev->getProjectedX(), prev->getProjectedY());
	Vec2r B(v->getProjectedX(), v->getProjectedY());
	Vec2r C(next->getProjectedX(), next->getProjectedY());
	Vec2r AB(B - A);
	Vec2r BC(C - B);
	Vec2r N1(-AB[1], AB[0]);
	if (N1.norm() != 0)
		N1.normalize();
	Vec2r N2(-BC[1], BC[0]);
	if (N2.norm() != 0)
		N2.normalize();
	if ((N1.norm() == 0) && (N2.norm() == 0)) {
		Exception::raiseException();
		result = 0;
		return -1; 
	}
	double cosin = N1 * N2;
	if (cosin > 1)
		cosin = 1;
	if (cosin < -1)
		cosin = -1;
	result = acos(cosin);
	return 0;
}
Ejemplo n.º 3
0
  double LocalAverageDepthF0D::operator()(Interface0DIterator& iter) {
    Canvas * iViewer = Canvas::getInstance();
    int bound = _filter.getBound();
    
    if( (iter->getProjectedX()-bound < 0) || (iter->getProjectedX()+bound>iViewer->width())
	|| (iter->getProjectedY()-bound < 0) || (iter->getProjectedY()+bound>iViewer->height()))
      return 0.0;
    GrayImage image ;
    iViewer->readDepthPixels((int)iter->getProjectedX()-bound,(int)iter->getProjectedY()-bound,_filter.maskSize(),_filter.maskSize(),image);
    return _filter.getSmoothedPixel(&image, (int)iter->getProjectedX(), (int)iter->getProjectedY());
  }
Ejemplo n.º 4
0
  double DensityF0D::operator()(Interface0DIterator& iter) {
    Canvas* canvas = Canvas::getInstance();
    int bound = _filter.getBound();
    if( (iter->getProjectedX()-bound < 0) || (iter->getProjectedX()+bound>canvas->width())
	|| (iter->getProjectedY()-bound < 0) || (iter->getProjectedY()+bound>canvas->height()))
      return 0.0;
    RGBImage image;
    canvas->readColorPixels((int)iter->getProjectedX() - bound,
			    (int)iter->getProjectedY() - bound,
			    _filter.maskSize(),
			    _filter.maskSize(),
			    image);
    return _filter.getSmoothedPixel<RGBImage>(&image, (int)iter->getProjectedX(),
					(int)iter->getProjectedY());
  }
Ejemplo n.º 5
0
  float GetViewMapGradientNormF0D::operator()(Interface0DIterator& iter){
    SteerableViewMap *svm = Canvas::getInstance()->getSteerableViewMap();
    float pxy = svm->readCompleteViewMapPixel(_level,(int)iter->getProjectedX(), (int)iter->getProjectedY());
    float gx = svm->readCompleteViewMapPixel(_level,(int)iter->getProjectedX()+_step, (int)iter->getProjectedY())
      - pxy;
    float gy = svm->readCompleteViewMapPixel(_level,(int)iter->getProjectedX(), (int)iter->getProjectedY()+_step)
      - pxy;
	float f = Vec2f(gx,gy).norm();
    return f;
  }
Ejemplo n.º 6
0
 float ReadCompleteViewMapPixelF0D::operator()(Interface0DIterator& iter) {
   SteerableViewMap *svm = Canvas::getInstance()->getSteerableViewMap();
   float v = svm->readCompleteViewMapPixel(_level,(int)iter->getProjectedX(), (int)iter->getProjectedY());
   return v;
 }
Ejemplo n.º 7
0
 float ReadMapPixelF0D::operator()(Interface0DIterator& iter) {
   Canvas * canvas = Canvas::getInstance();
   return canvas->readMapPixel(_mapName, _level, (int)iter->getProjectedX(), (int)iter->getProjectedY());
 }