Jump to content

  • Log In with Google      Sign In   
  • Create Account


caiusg

Member Since 12 Sep 2013
Offline Last Active Sep 20 2013 06:55 AM
-----

Topics I've Started

Need help with forward declarations C++

17 September 2013 - 06:08 PM

Hi there!
I'm learning Cinder and C++ and I'm stuck with forward declarations.

I have two classes and I would like to access each other: brick uses track and track uses brick.

 
Can you help me to solve this? I spent many hours and I still can't find a solution.  This almost works now, but I cannot access anything from track within brick.
 
 
I've also tried separating the implementation of brick.h to brick.cpp, but it broke everything.
main.cpp


#include "cinder/app/AppBasic.h"
#include "cinder/gl/gl.h"


#include "track.h"
#include "player.h"


using namespace ci;
using namespace ci::app;
using namespace std;


class game_ver_2App : public AppBasic
{
public:
void setup();
void update();
void draw();
void prepareSettings( Settings *settings );


private:
track mTrack;
};


void game_ver_2App::prepareSettings( Settings *settings )
{
}
void game_ver_2App::setup()
{
}


void game_ver_2App::update()
{
}


void game_ver_2App::draw()
{
}


CINDER_APP_BASIC( game_ver_2App, RendererGl )






brick.h


#pragma once


#include "track.h"


class track;


class brick
{
public:
brick();
void setTrack(track &theTrack);


private:
track *mTrack;
};


brick::brick()
{


}


void brick::setTrack(track &theTrack)
{
mTrack = &theTrack;
int b = mTrack->a;
}


track.h


#pragma once


#include <math.h>
#include "cinder/vector.h"
#include "cinder/BSpline.h"
#include "cinder/Rand.h"


#include "brick.h"


using namespace ci;
using namespace std;


class track
{


public:
track();
int a;
private:
vector<brick> brickPositions;
};


track::track()
{
}

Bending of track in a racing game

12 September 2013 - 05:07 PM

Hi!
 
I am trying to create a small racing game in which the track would be modeled using a BSpline curve for the path's center line and directional vectors to define the 'bending' of the track at each point.
 
My problem is that I don't know how to calculate the correct bending / slope of the curve, in such a way that it would be optimal or at least visually nice for a car to 'bend in the corner'.
 
My idea was to use the direction of the 2nd derivatives of the curve, however while this approach looks fine for most of the track, there are points in which the 2nd derivative makes sharp 'twists' / very quick 180 degree flips. I also read about 'knots' of bsplines, but I don't know if such 'twist' in 2nd derivatives is a knot or knots are something else.
 
Can you tell me that using a BSpline:
1. How could I calculate a visually nice bending of a track for a racing game?
2. Is it possible to do this by using some simple calculations of centripertal force / gravity?
3. Is it possible to do this by using 1st, 2nd and 3rd derivatives of the BSpline curve?
 
I am not looking for the 'physically correct' bending angle for the track, I would just like to create something which is visually pleasing in a simple game.
 
I am using a framework which has a built-in class for BSpline, including support for 1st, 2nd and 3rd derivatives of the curve.
 
Thank you!

 


PARTNERS