예제 #1
0
void Objet::bouger(double delta_t)
{
//cout << "objet dt=" << delta_t << endl;
//cout << "vitesse objet =" << vitesse(0) << "," << vitesse(1) << endl;
    position(0)+=delta_t*vitesse(0);
    position(1)+=delta_t*vitesse(1);

    std::ostringstream strs;
    strs << position(0) << " " << vitesse(0) << " " << position(1) << " " << vitesse(1);
    trace.ecrire(strs.str());
}
예제 #2
0
Objet::Objet(double x0,double y0,double v0x, double v0y)
{
    position = vec(2);
    position(0)=x0;
    position(1)=y0;
    masse=50;
    vitesse = vec(2);
    vitesse(0)=v0x;
    vitesse(1)=v0y;
    energie=0;

    trace = Trace();
}
예제 #3
0
void ObjetVolant::test(actionObjetVolant action, QPointF pointArrivee, double angleArrivee, double vitesseArrivee)
{
    animationRoot->stop();
    setAction(action);

    int ms;
    double distance;
    double angleRadian;
    QPointF newPosition;
    double newAngle;
    double newVitesse;

    ms = 25;
    distance = vitesse() * ms;
    angleRadian = rad(angle());

    newAngle = angle() + vitesseAngulaire() * ms;
    newVitesse = vitesse() + acceleration() * ms;
    newPosition = position() + QPointF(cos(angleRadian) * distance,
                                       sin(angleRadian) * distance);
}
예제 #4
0
void ObjetVolant::seDeplacer()
{
    int ms;
    double distance;
    double angleRadian;
    QPointF newPosition;
    double newAngle;
    double newVitesse;

    //Calcule l'angle, la vitesse et la position
    ms = temps.elapsed();
    distance = vitesse() * ms;
    angleRadian = rad(angle());

    newAngle = angle() + vitesseAngulaire() * ms;
    newVitesse = vitesse() + acceleration() * ms;
    newPosition = position() + QPointF(cos(angleRadian) * distance,
                                       sin(angleRadian) * distance);

    //Déplace l'objet volant
    seDeplacer(newPosition, newAngle, newVitesse);
}
예제 #5
0
void ObjetVolant::seDeplacer(QPointF pointArrivee, double angleArrivee, double vitesseArrivee)
{
    //Prépare les animations de position, d'angle, et de vitesse
    animationPosition->setStartValue(position());
    animationPosition->setEndValue(pointArrivee);

    animationAngle->setStartValue(angle());
    animationAngle->setEndValue(angleArrivee);

    animationVitesse->setStartValue(vitesse());
    animationVitesse->setEndValue(vitesseArrivee);

    animationRoot->start();
    temps.restart();
}
예제 #6
0
// Renvoie 1 la vitesse des angles est faible, c'est à dire que le bras ne bouge plus
bool Baxter_left_arm::vitesse_nulle()
{
	std::vector<bool> vitesse(7,0);
	bool test=1;
	int j=0;

	for(size_t i = 2; i < 9; i++) 
	{
		vitesse[i-2] = jointState.velocity[i] < 0.03 ;
		//std::cout<<vitesse[i]<<std::endl;
	}

	while(j<7) 
	{
		test*=vitesse[j];
		j++;
		//std::cout<<"test"<<test<<std::endl;
	}

	return test;
}
예제 #7
0
void Objet::setVitesse(double vx, double vy)
{
    vitesse(0) = vx;
    vitesse(1) = vy;
}
예제 #8
0
double Objet::getVitesse()
{
    return sqrt(vitesse(0)*vitesse(0) + vitesse(1)*vitesse(1));
}
예제 #9
0
void Objet::setVy(double v0)
{
    vitesse(1) = v0;
}
예제 #10
0
double Objet::getVy()
{
    return vitesse(1);
}
예제 #11
0
void Objet::setVx(double v0)
{
    vitesse(0) = v0;
}
예제 #12
0
double Objet::getVx()
{
    return vitesse(0);
}