fix physics calculation. move wagon mass back to their corresponding terms
This commit is contained in:
parent
b0edbbc7a1
commit
ac6015cf65
|
@ -226,7 +226,7 @@ void spawnWagon(){
|
||||||
// pos, wagonlength, startvel , startacc, trainmass, wagoncolor
|
// pos, wagonlength, startvel , startacc, trainmass, wagoncolor
|
||||||
//Wagon tmpr = Wagon(maxid++,NUMPIXELS,&strip, height, random(0, 20), _randomlength, random(map(_randomlength,3,40,1,1), map(_randomlength,3,40, 13,40))/10.0 , 0 , 5 , Wheel((uint8_t)random(0,255))); //spawn new wagon
|
//Wagon tmpr = Wagon(maxid++,NUMPIXELS,&strip, height, random(0, 20), _randomlength, random(map(_randomlength,3,40,1,1), map(_randomlength,3,40, 13,40))/10.0 , 0 , 5 , Wheel((uint8_t)random(0,255))); //spawn new wagon
|
||||||
|
|
||||||
Wagon tmpr = Wagon(maxid++,NUMPIXELS,&strip, height, NUMPIXELS+_randomlength, _randomlength, -random(map(_randomlength,3,40,10,20), map(_randomlength,3,40, 22,60))/10.0 , 0 , 5 , Wheel((uint8_t)random(0,255))); //spawn new wagon
|
Wagon tmpr = Wagon(maxid++,NUMPIXELS,&strip, height, NUMPIXELS+_randomlength, _randomlength, -random(map(_randomlength,3,40,10,20), map(_randomlength,3,40, 22,60))/10.0 , 0 , 2.0 , Wheel((uint8_t)random(0,255))); //spawn new wagon
|
||||||
|
|
||||||
//special spawns
|
//special spawns
|
||||||
if (random(0,50)==0){
|
if (random(0,50)==0){
|
||||||
|
@ -313,7 +313,7 @@ void checkSerial(){
|
||||||
int spawnstartacc=rest.substring(0,rest.indexOf(',')).toInt(); //part to next ,
|
int spawnstartacc=rest.substring(0,rest.indexOf(',')).toInt(); //part to next ,
|
||||||
rest=rest.substring(rest.indexOf(',')+1); //part after ,
|
rest=rest.substring(rest.indexOf(',')+1); //part after ,
|
||||||
|
|
||||||
int spawnmass=rest.substring(0,rest.indexOf(',')).toInt(); //part to next ,
|
float spawnmass=rest.substring(0,rest.indexOf(',')).toInt()/1000.0; //part to next , //mass in gramm
|
||||||
rest=rest.substring(rest.indexOf(',')+1); //part after ,
|
rest=rest.substring(rest.indexOf(',')+1); //part after ,
|
||||||
|
|
||||||
int spawncolor=rest.substring(0).toInt(); //part to next ,
|
int spawncolor=rest.substring(0).toInt(); //part to next ,
|
||||||
|
|
|
@ -29,7 +29,7 @@ int spawnstartacc;
|
||||||
int maxspawnstartacc=100;
|
int maxspawnstartacc=100;
|
||||||
Slider slSpawnMass;
|
Slider slSpawnMass;
|
||||||
int spawnmass;
|
int spawnmass;
|
||||||
int maxspawnmass=200;
|
int maxspawnmass=10000;
|
||||||
Slider slSpawnColor;
|
Slider slSpawnColor;
|
||||||
int spawncolor;
|
int spawncolor;
|
||||||
int maxspawncolor=255;
|
int maxspawncolor=255;
|
||||||
|
@ -91,7 +91,7 @@ void setup() {
|
||||||
|
|
||||||
slSpawnPos = cp5.addSlider("spawnpos")
|
slSpawnPos = cp5.addSlider("spawnpos")
|
||||||
.setRange(0,numpixels-1)
|
.setRange(0,numpixels-1)
|
||||||
.setValue(0)
|
.setValue(590)
|
||||||
.setPosition(220,80)
|
.setPosition(220,80)
|
||||||
.setSize(300,10);
|
.setSize(300,10);
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ void setup() {
|
||||||
|
|
||||||
slSpawnStartvel = cp5.addSlider("spawnstartvel")
|
slSpawnStartvel = cp5.addSlider("spawnstartvel")
|
||||||
.setRange(-maxspawnstartvel,maxspawnstartvel)
|
.setRange(-maxspawnstartvel,maxspawnstartvel)
|
||||||
.setValue(70)
|
.setValue(-20)
|
||||||
.setPosition(220,80+15*2)
|
.setPosition(220,80+15*2)
|
||||||
.setSize(maxspawnstartvel*2,10);
|
.setSize(maxspawnstartvel*2,10);
|
||||||
|
|
||||||
|
@ -115,9 +115,9 @@ void setup() {
|
||||||
|
|
||||||
slSpawnMass = cp5.addSlider("spawnmass")
|
slSpawnMass = cp5.addSlider("spawnmass")
|
||||||
.setRange(1,maxspawnmass)
|
.setRange(1,maxspawnmass)
|
||||||
.setValue(10)
|
.setValue(1000)
|
||||||
.setPosition(220,80+15*4)
|
.setPosition(220,80+15*4)
|
||||||
.setSize(maxspawnmass-1,10);
|
.setSize(maxspawnmass/100-1,10);
|
||||||
|
|
||||||
slSpawnColor = cp5.addSlider("spawncolor")
|
slSpawnColor = cp5.addSlider("spawncolor")
|
||||||
.setRange(0,maxspawncolor)
|
.setRange(0,maxspawncolor)
|
||||||
|
|
18
wagon.cpp
18
wagon.cpp
|
@ -77,10 +77,10 @@ void Wagon::updatePhysics(float updatedelayms)
|
||||||
}*/
|
}*/
|
||||||
#define CONST_G 9.81
|
#define CONST_G 9.81
|
||||||
#define PIXELDISTANCE 1.6666667 // 1/60.0 * 100
|
#define PIXELDISTANCE 1.6666667 // 1/60.0 * 100
|
||||||
#define C_ROLL 0.001 // = Croll * G https://de.wikipedia.org/wiki/Rollwiderstand 0.001 (zug)
|
#define C_ROLL 0.001 // = Croll https://de.wikipedia.org/wiki/Rollwiderstand 0.001 (zug)
|
||||||
#define AIRRESFIRST 0.18 //C_w*A*0.5*rho Air resistance: C_w * A * 0.5 * rho (.... *v^2)
|
#define AIRRESFIRST 0.018 //C_w*A*0.5*rho Air resistance: C_w * A * 0.5 * rho (.... *v^2) 0.18
|
||||||
#define AIRRES 0.01 //for slipstream at second wagon
|
#define AIRRES 0.001 //for slipstream at second wagon
|
||||||
#define AIRRESMUL 0.7 //how much of air resistance the next wagon has
|
#define AIRRESMUL 0.2 //how much of air resistance the next wagon has
|
||||||
//http://www.kfz-tech.de/Biblio/Formelsammlung/Luftwiderstand.htm C_w 0.6
|
//http://www.kfz-tech.de/Biblio/Formelsammlung/Luftwiderstand.htm C_w 0.6
|
||||||
//rho Massendichte luft 1,2041
|
//rho Massendichte luft 1,2041
|
||||||
//A = 1m^2
|
//A = 1m^2
|
||||||
|
@ -105,10 +105,10 @@ void Wagon::updatePhysics(float updatedelayms)
|
||||||
|
|
||||||
//_acc += CONST_G * cos(beta) - C_ROLLG*sin(beta) - AIRRES/m*_vel*_vel;
|
//_acc += CONST_G * cos(beta) - C_ROLLG*sin(beta) - AIRRES/m*_vel*_vel;
|
||||||
|
|
||||||
float aa=CONST_G * cos(beta) *updatedelayms/1000; //Gravity and m/s^2 time correction
|
float aa=CONST_G *m* cos(beta) *updatedelayms/1000; //Gravity and m/s^2 time correction
|
||||||
|
|
||||||
//Roll Resistance
|
//Roll Resistance
|
||||||
float bb=C_ROLL*CONST_G*updatedelayms/1000*sin(beta); //roll resistance
|
float bb=C_ROLL*m*CONST_G*updatedelayms/1000*sin(beta); //roll resistance
|
||||||
|
|
||||||
if (_vel<0){
|
if (_vel<0){
|
||||||
bb*=-1;
|
bb*=-1;
|
||||||
|
@ -117,9 +117,11 @@ void Wagon::updatePhysics(float updatedelayms)
|
||||||
//Air Resistance
|
//Air Resistance
|
||||||
float cc=0;
|
float cc=0;
|
||||||
if (wagonnumber==0){ //first wagon
|
if (wagonnumber==0){ //first wagon
|
||||||
cc=AIRRESFIRST/m*pow(_vel,2); //air resistance for first wagon
|
//cc=AIRRESFIRST/m*pow(_vel,2); //air resistance for first wagon
|
||||||
|
cc=AIRRESFIRST*pow(_vel,2); //air resistance for first wagon
|
||||||
}else {
|
}else {
|
||||||
cc=AIRRES/m*pow(_vel,2) *pow(AIRRESMUL,wagonnumber-1); //air resistance
|
//cc=AIRRES/m*pow(_vel,2) *pow(AIRRESMUL,wagonnumber-1); //air resistance
|
||||||
|
cc=AIRRES*pow(_vel,2) *pow(AIRRESMUL,wagonnumber-1); //air resistance
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_vel<0){
|
if (_vel<0){
|
||||||
|
|
Loading…
Reference in New Issue