当前位置: 首页>>代码示例>>C++>>正文


C++ Poly::getVertexCircular方法代码示例

本文整理汇总了C++中Poly::getVertexCircular方法的典型用法代码示例。如果您正苦于以下问题:C++ Poly::getVertexCircular方法的具体用法?C++ Poly::getVertexCircular怎么用?C++ Poly::getVertexCircular使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Poly的用法示例。


在下文中一共展示了Poly::getVertexCircular方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: addInfillPoly

void Infill::addInfillPoly(Poly p)
{
  // Poly *zigzagpoly = NULL;
  switch (type) {
  // case ZigzagInfill: // take parallel lines and connect ends
  //   zigzagpoly = new Poly(p.getZ(),extrusionfactor);
  case BridgeInfill:
  case ParallelInfill:
    { // make lines instead of closed polygons
      Vector2d l,rotl;
      double sina = sin(-angle);
      double cosa = cos(-angle);
      // use the lines that have the angle of this Infill
      for (uint i=0; i < p.size() ; i+=1 )
  	{
  	  l = (p.getVertexCircular(i+1) - p.getVertexCircular(i));     
	  // rotate with neg. infill angle and see whether it's 90° as infill lines
	  rotl = Vector2d(l.x*cosa-l.y*sina, 
			  l.y*cosa+l.x*sina);
	  if (abs(rotl.x) < 0.1 && abs(rotl.y) > 0.1)
  	    {
	      // if (zigzagpoly) {
	      // 	zigzagpoly->addVertex(p.getVertexCircular(i+i%2));
	      // 	zigzagpoly->addVertex(p.getVertexCircular(i+1+i%2));
	      // } else
	      {
		Poly newpoly(p.getZ(), extrusionfactor);
		newpoly.vertices.push_back(p.getVertexCircular(i));
		newpoly.vertices.push_back(p.getVertexCircular(i+1));
		infillpolys.push_back(newpoly);
	      }
  	    }
	  // else
	  //   if (zigzagpoly) {
	  //     zigzagpoly->addVertex(p.getVertexCircular(i));	      
	  //   }
  	}
      // if (zigzagpoly) {
      // 	cerr << zigzagpoly->size()<< endl;
      // 	if (zigzagpoly->size()>0)
      // 	  infillpolys.push_back(*zigzagpoly);
      // 	else delete zigzagpoly;
      // 	cerr << infillpolys.size()<< endl;
      // }
    } 
    break;
  default:
    {
      p.setExtrusionFactor(extrusionfactor);
      infillpolys.push_back(p);
    }
  }
}
开发者ID:asheikh91,项目名称:repsnapper,代码行数:53,代码来源:infill.cpp

示例2: shortestConnectionSq

// returns length and two points
double Poly::shortestConnectionSq(const Poly &p2, Vector2d &start, Vector2d &end) const
{
    double min1 = 100000000, min2 = 100000000;
    int minindex1=0, minindex2=0;
    Vector2d onpoint1, onpoint2;
    // test this vertices
    for (uint i = 0; i < vertices.size(); i++) {
        for (uint j = 0; j < p2.vertices.size(); j++) {
            Vector2d onpoint; // on p2
            // dist from point i to lines on p2
            const double mindist =
                point_segment_distance_Sq(p2.vertices[j], p2.getVertexCircular(j+1),
                                          vertices[i], onpoint);
            if (mindist < min1) {
                min1 = mindist;
                onpoint1 = onpoint;
                minindex1 = i;
            }
        }
    }
    // test p2 vertices
    for (uint i = 0; i < p2.vertices.size(); i++) {
        for (uint j = 0; j < vertices.size(); j++) {
            Vector2d onpoint; // on this
            // dist from p2 point i to lines on this
            const double mindist =
                point_segment_distance_Sq(vertices[j], getVertexCircular(j+1),
                                          p2.vertices[i], onpoint);
            if (mindist < min2) {
                min2 = mindist;
                onpoint2 = onpoint;
                minindex2 = i;
            }
        }
    }
    if (min1 < min2) { // this vertex, some point on p2 lines
        start = getVertexCircular(minindex1);
        end = onpoint1;
    } else { // p2 vertex, some point of this lines
        start = p2.getVertexCircular(minindex2);
        end = onpoint2;
    }
    return (end-start).squared_length();
}
开发者ID:jomu9721,项目名称:repsnapper,代码行数:45,代码来源:poly.cpp

示例3: getClipperPolygon

CL::Polygon Clipping::getClipperPolygon(const Poly &poly)
{
  CL::Polygon cpoly(poly.vertices.size());
  for(size_t i=0; i<poly.vertices.size();i++){
    Vector2d P1;
    // if (reverse)
      P1 = poly.getVertexCircular(-i); // have to reverse from/to clipper
    // else
    //   P1 = poly.getVertexCircular(i);
    cpoly[i]=(ClipperPoint(P1));
  }
  // doesn't work...:
  // cerr<< "poly is hole? "<< hole;
  // cerr<< " -- orient=" <<ClipperLib::Orientation(cpoly) << endl;
  // if (ClipperLib::Orientation(cpoly) == hole)
  //   std::reverse(cpoly.begin(),cpoly.end());
  return cpoly;
}
开发者ID:Funny-DK,项目名称:repsnapper,代码行数:18,代码来源:clipping.cpp


注:本文中的Poly::getVertexCircular方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。