int LayerSolver::fitIntoSpaceMaxSurface(Box* box, Space space) { comparisonCount++; if (box->getMinSurface() > space.getSurface()) { return -1; } int surfaceLeft = -1; if (box->getSurface() <= space.getSurface() && box->getX() <= space.getWidth() && box->getZ() <= space.getLength()) { surfaceLeft = space.getSurface() - box->getSurface(); } return surfaceLeft; }
void HelloParticlesApp::setup() { timer = new Timer(); // init physics Space* space = new Space(getWindowWidth(), getWindowHeight(), 0); printf("init space %f %f %f\n", space->getWidth(), space->getHeight(), space->getDepth()); physics = new Physics(space); Emitter* emitter = new Emitter(physics); physics->emitter = emitter; emitter->setPosition(space->getCenter()); emitter->setInterval(0.01); emitter->setRate(1000); emitter->setMax(5000); emitter->addBehaviour(new RandomEmitter(space)); physics->addBehaviour(new Gravity()); // wrap BoxWrap* wrap = new BoxWrap(*space); wrap->preserveMomentum = false; physics->addBehaviour(wrap); // attractor attractor = new AttractorPoint(space); attractor->setRange(0.25); attractor->setWeight(0); physics->addBehaviour(attractor); // init graphics gl::VboMesh::Layout layout; layout.setStaticIndices(); layout.setDynamicPositions(); layout.setStaticTexCoords2d(); vboParticles = gl::VboMesh(emitter->getMax(), 0, layout, GL_POINTS); }