Click here to Skip to main content
15,891,864 members
Articles / Multimedia / OpenGL

Bouncing Balls in OSG

Rate me:
Please Sign up or sign in to vote.
4.50/5 (4 votes)
29 Aug 2008CPOL4 min read 36.9K   835   26  
Simulation in OSG using discrete events, a Ternary Heap and Interpolation
#include "StdAfx.h"
#include "Ball.h"
#include "Simulator.h"
#include "BounceWall.h"
#include "BounceBalls.h"

CBall::CBall( CSimulator *sim, double radius, double time, osg::Vec3d pos, osg::Vec3d vel )
	: situation( sim, time, pos, vel )
{
	this->radius = radius;
	for( int i=0; i<3; ++i )
	{
		bounces[i] = new CBounceWall(this,i);
		sim->Add( bounces[i] );
	}
}

CBall::~CBall(void)
{
}

CSimulator *CBall::Simulator()
{
	return situation.Simulator();
}

void CBall::PredictChanges()
{
	double t = situation.GetBaseTime();
	for( int i=0; i<3; ++i )
		bounces[i]->PredictCollisionBetweenBallAndWall( t );
	for( Colliders::iterator it = colliders.begin();
		it != colliders.end(); ++it )
		(*it)->PredictCollisionBetweenBalls( t );
}

void CBall::AddCollider( CBounceBalls *collider )
{
	colliders.push_back( collider );
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) Engineering, Design and Models Ltd
United Kingdom United Kingdom
I develop rail signalling simulation technology at EDM where I use C++ and C#, but also love to dabble in functional programming languages such as Clean and Cat.

Comments and Discussions