void CGeneralizedCylinder::getEnd(CPolyhedronPtr &poly) const { if (!meshUpToDate) updateMesh(); if (axis.size()<2||generatrix.size()<3) throw std::logic_error("Not enough points."); size_t i=(fullyVisible?axis.size():lastSection)-1; generatePolygon(poly,generatrix,axis[i]); poly->setPose(this->m_pose); poly->setColor(getColor()); }
pair<CPolyhedronPtr,CPolyhedronPtr> addPairOfPolys(CPolyhedronPtr p1,CPolyhedronPtr p2,CSetOfObjectsPtr &objs,double x,double y) { p1->makeConvexPolygons(); p2->makeConvexPolygons(); #ifdef PAIRED_RANDOM_POSES CPose3D pose=CPose3D(x,y,randomZ(),randomAngle(),randomAngle(),randomAngle()); p1->setPose(pose); p2->setPose(pose); #else CPose3D pose1=CPose3D(x,y,randomZ(),randomAngle(),randomAngle(),randomAngle()); CPose3D pose2=CPose3D(x,y,randomZ(),randomAngle(),randomAngle(),randomAngle()); p1->setPose(pose1); p2->setPose(pose2); #endif randomColor(p1,0.5); randomColor(p2,0.5); objs->insert(p1); objs->insert(p2); return make_pair(p1,p2); }