示例#1
0
int main (int argc, char *argv[]) {

	srand(time(NULL));
	initGraphics(argc, argv);
	glEnable(GL_POINT_SMOOTH);

	Particle::startLifeSpan = 50;
	Particle::startColour = emitColours[0];
	currentColour = Particle::startColour;
	Particle::initialVelocity = 20.0;
	Particle::terminalVelocity = 50;
	Particle::airResistance = 1.0;
	Particle::renderMode = PARTICLERENDERMODE_POINT;
	Particle::bounce = 0.5;
	ParticleEmitter::emitSpread = 1.0;
	ParticleSystem::perEmit = 4;

	Texture::load("grass.png", "grass");
	Texture::load("sky.png", "sky");
	Texture::load("shine.png", "shine");

	glPointSize(10.0f);

	std::cout << glGetString(GL_RENDERER);

	createMoutains(&mountainY);

	createTrees();

	initFlyBys();

	// Create water sprinkler
	particleSystem = ParticleSystem();
	particleSystem.setEmitTicks(emitFrequency);
	makeSprinkler();

	camera = Vector3(
		cameraDistance * cos(cameraAngle * (M_PI / 180)), 
		cameraElevation , 
		cameraDistance * sin(cameraAngle * (M_PI/ 180))
	);

	gravitationalForce[0] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0, Vector3(100.0, -100, -400.0));
	gravitationalForce[1] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0,  Vector3(100.0, -100, -300.0));
	gravitationalForce[2] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0,  Vector3(100.0, -100, -200.0));
	gravitationalForce[3] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0,  Vector3(100.0, -100, -100.0));
	gravitationalForce[4] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0,  Vector3(100.0, -100, 0.0));
	gravitationalForce[5] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0,  Vector3(100.0, -100, 100.0));
	gravitationalForce[6] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0,  Vector3(100.0, -100, 200.0));
	gravitationalForce[7] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0,  Vector3(100.0, -100, 300.0));
	gravitationalForce[8] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0,  Vector3(100.0, -100, 400.0));

	glutMainLoop();

}
示例#2
0
void QViPhyManager::addForce(ForceEnum forceEnum)
{
    std::shared_ptr<Force> force;
    switch(forceEnum) {
        case ForceEnum::GRAVITY: {
            auto GForce = std::make_shared<GravitationalForce>(GravitationalForce());
            GForce->setSoftener(0.05 * 0.05);
            force = GForce;
            _simulation->addForce(force);
            break;
        }
        case ForceEnum::COULOMB: {
            auto CForce = std::make_shared<ColoumbForce>(ColoumbForce());
            CForce->setSoftener(0.05 * 0.05);
            force = CForce;
            _simulation->addForce(force);
            break;
        }
    }
}