AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Object: balancier

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Caly
Utilisateur confirmé: Rang ****
avatar

Messages : 1279
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Object: balancier   Dim 12 Fév 2012 - 20:40

Voici comment créer un balancier:

Event - Create Create :
Code:
for(rope=0;  place_free(x,y-rope) and rope<=150; rope+=1){} //Longeur de la code.

base_x = x;
base_y = y-rope;

angle = 75; //Angle max du balancement
strenght = 0; //force minimum du balancement (vitesse)

Event - Draw Draw:
Code:
Gravity = angle/720;
strenght += -Gravity;
angle += strenght;

image_angle = angle;

x = base_x+(rope*sin(angle/57.3));
y = base_y+(rope*cos(angle/57.3));

draw_line_width(x,y,base_x,base_y,4);

draw_circle(x,y,10,0);
draw_circle(base_x, base_y, 4, 0);


Version simplifiée avec une seule image.

Event - Create Create:
Code:
image_angle = 75; //Angle max du balancement
strenght = 0; //force minimum du balancement (vitesse)

Event - Step Step:
Code:
Gravity=image_angle/720;
strenght+=-Gravity;
image_angle+= strenght;

x = xstart+(sin(image_angle/57.3));
y = ystart+(cos(image_angle/57.3));



Dernière édition par Caly le Lun 13 Fév 2012 - 16:26, édité 2 fois
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8915
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Object: balancier   Dim 12 Fév 2012 - 21:02

Lawl cours de physique sur le pendule :p
Souvenirs souvenirs x)


D'ailleurs me suis pris un 5 aux exams la... uh, dommage y avais pas de pendule gnii

_________________
                 
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
avatar

Messages : 1279
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Re: Object: balancier   Dim 12 Fév 2012 - 21:03

Ouai je me suis tapé du Wikipédia pendant une bonne heure pour sortir un truc correct, pour ça que je le partage.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8915
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Object: balancier   Dim 12 Fév 2012 - 21:04

Va jamais voir l'intégration de Verlet alors x)
Ça c'est un coup a ce pendre, surtout quand le rebond est mentionné nul part horror

_________________
                 
Revenir en haut Aller en bas
red-error
Utilisateur confirmé: Rang ****
avatar

Messages : 1015
Projet Actuel :

MessageSujet: Re: Object: balancier   Dim 12 Fév 2012 - 22:26

super Je pensais justement faire des lianes pour une idée de projet "arbre", je teste ça de suite.
Edit \o/ un "collision_line" avec object_index et un copier-coller du code de la pendule et hop. Bonjour Indi !
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
avatar

Messages : 1279
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Re: Object: balancier   Lun 13 Fév 2012 - 16:26

Heureux que ça serve, par-contre pour une liane tu as plus simple comme code.
nb: Je l'ai ajouté dans le premier message.
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
avatar

Messages : 1609
Localisation : Montpellier

MessageSujet: Re: Object: balancier   Mar 14 Fév 2012 - 22:03

J'avais fait un truc similaire qui traîne encore dans mes dossiers GM... On a la même réaction aux cours de méca :p

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
avatar

Messages : 1279
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Re: Object: balancier   Mar 14 Fév 2012 - 22:12

Ouai c'est la galère les trucs de physiques à coder, surtout que mon cursus est le management donc niveau math c'est pas trop ça quoi.

D'ailleurs si dans ton code qui traîne il y a un bout de code pour que le balancier arrête de se balancer quant il heurte un obstacle je prend.
Genre tu fous une caisse devant, il la heurte et il stop, mais si l'angle est assez important quant on vire la caisse il reprend mais pas avec la même vitesse/puissance.


Dernière édition par Caly le Mar 14 Fév 2012 - 22:58, édité 1 fois
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
avatar

Messages : 1609
Localisation : Montpellier

MessageSujet: Re: Object: balancier   Mar 14 Fév 2012 - 22:46

Voici :

Create:
Code:
grav=2
length=256
angle=30
anglespeed=0
delta=0

Step:
Code:
force=point_direction(0,0,lengthdir_x(length,angle)+grav,lengthdir_y(length,angle))
delta=force-angle mod 360
if delta<-180 delta+=360
if delta>180 delta-=360
anglespeed+=delta
angle+=anglespeed

Draw:
Code:
draw_line(320,32,320+lengthdir_y(length,angle),32+lengthdir_x(length,angle))
draw_circle(320+lengthdir_y(length,angle),32+lengthdir_x(length,angle),16,false)
draw_text(8,8,"angle="+string(angle)+"#torque="+string(anglespeed)+"#delta="+string(delta))

Réflexion très simple : le pendule est considéré comme un objet inextensible, donc tout mouvement de sa tête est "snappé" au cercle de rayon 'length'.
Donc, je détermine quel est l'angle entre la position actuelle du pendule et sa position suite à une chute libre, par rapport au centre de rotation (en ajoutant le vecteur 'grav')
J'obtiens une accélération angulaire 'delta' qu'il me suffit de primitiver deux fois pour avoir ma vitesse angulaire, puis mon angle.

Pour agir sur le pendule, faut modifier la première ligne du step :
Code:
force=point_direction(0,0,lengthdir_x(length,angle)+xForce,lengthdir_y(length,angle)+yForce)

... et rajouter après les primitives:
Code:
xForce=0
yForce=grav

Ainsi, tous les autres objets peuvent ajouter les coordonnées d'un vecteur force à (xForce;yForce) pour modéliser une force sur la tête du pendule. Quelques lignes de gestion de collisions seront pas de trop pour éviter le clipping, mais dans le principe c'est ça.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
avatar

Messages : 1279
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Re: Object: balancier   Mar 14 Fév 2012 - 23:00

Cool, merci, ça va m'éviter des maux de tête et des heures à lire des formules sur wikipédia. Smile
Je mettrai tout ça au point demain soir ou dans la semaine. Merci bien D-z!
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
avatar

Messages : 1609
Localisation : Montpellier

MessageSujet: Re: Object: balancier   Mar 14 Fév 2012 - 23:06

Mais je t'en prie Smile

Ça a été étonnamment simple à coder une fois que j'ai trouvé l'idée de projeter un vecteur "chute imaginaire"... at ça doit pas être vraiment plus dur de gérer le raccourcissement, voir l'élasticité de la tige. À voir.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Object: balancier   

Revenir en haut Aller en bas
 
Object: balancier
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Qui connait..?
» Montessori...quoi à quel âge?
» L'objectif "XYZ"
» les 7 objets nécessaires à l'homme

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: