void ParallaxBackground::update(const ViewPort& viewPort) { for (auto& l : layers_) { auto& vpp = viewPort.getPosition(); l.sprite->setPosition(Vector2Glf(vpp(0) + (l.offset(0)-vpp(0))*l.parallaxRatio, vpp(1) + (l.offset(1)-vpp(1))*l.parallaxRatio)); } }
void PCPolyhedron::unifyVertexs() { vertexs.clear(); struct VertexInPCPolygon { VertexInPCPolygon(PCPolygon* pcp, int vertex) : pcp(pcp), vertex(vertex) { } PCPolygon* pcp; int vertex; }; vector<VertexInPCPolygon> updateVertexs; for (vector<PCPolygonPtr>::iterator nextIter = pcpolygons.begin(); nextIter != pcpolygons.end();) { vector<PCPolygonPtr>::iterator iter = nextIter++; Polygon* polygon = (*iter)->getPolygonModelObject(); if (polygon == NULL) { // No model object is available yet, quit! return; } for (int j = 0; j < polygon->getMathModel().getVertexs().size(); j++) { updateVertexs.clear(); VertexInPCPolygon vpp(iter->get(), j); updateVertexs.push_back(vpp); ofVec3f v(polygon->getMathModel().getVertexs()[j]); for (vector<PCPolygonPtr>::iterator iter2 = iter; iter2 != pcpolygons.end(); iter2++) { Polygon* polygon2 = (*iter2)->getPolygonModelObject(); for (int k = 0; k < polygon2->getMathModel().getVertexs().size(); k++) { ofVec3f v2(polygon2->getMathModel().getVertexs()[k]); if (!(v == v2) && polygon->getMathModel().getVertexs()[j].distance(polygon2->getMathModel().getVertexs()[k]) <= Constants::OBJECT_VERTEX_UNIFYING_DISTANCE()) { VertexInPCPolygon vpp2(iter2->get(), k); updateVertexs.push_back(vpp2); } } } if (updateVertexs.size() > 1) { ofVec3f avg(0, 0, 0); for (int i = 0; i < updateVertexs.size(); i++) { avg += updateVertexs.at(i).pcp->getPolygonModelObject()->getMathModel().getVertexs()[updateVertexs.at(i).vertex]; } avg /= updateVertexs.size(); for (int i = 0; i < updateVertexs.size(); i++) { updateVertexs.at(i).pcp->getPolygonModelObject()->setVertex(updateVertexs.at(i).vertex, avg); //vx.Polygons.push_back(PCPolygonPtr(updateVertexs.at(i).pcp)); } this->vertexs.push_back(avg); //vx.setPoint(avg); //vertexs.push_back(vx); } } } saveCloud("UnifiedVertex.pcd", vertexs); }