Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

trajectoire d'une boule de billard...

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Autres questions
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
juda
Invité





MessagePosté le: 26 Mai 2006 16:16    Sujet du message: trajectoire d'une boule de billard... Répondre en citant

Bonjour,
Je suis un grand debutant sur le logiciel et j'aurai aimer savoir si il etait possible de recreer une simlation de la trajectoire d'une boule de billard en la fesant partir d'un des bord avc un angle de depart a determiner. (la vitesse ne me semblant pas prioritaire).
je vous remercies de votre disponibilité et de tout renseignement me permettant d'avancer!!!
Revenir en haut de page
ALS
Invité





MessagePosté le: 27 Mai 2006 16:45    Sujet du message: Répondre en citant

Bonjour, voici une animation d'une boule rebondissant sur les rebords d'un cadre rectangulaire.

X,Y: position initiale
alpha: angle avec l'horizontale (compris entre 0 et Pi/2)
n: nombre de rebonds
xMin,xMax,yMin,yMax: limites du cadre
width,height: dimensions du rectangle englobant la balle
frx,fry: frottements en x et y.

Code:

> restart: with(plots): with(plottools):

> balle := proc(x,y,r) PLOT(disk([x,y], r, color=red)) end:
 
> trajectoire:=proc(X,Y,alpha,n,xMin,xMax,yMin,yMax,width,height,frx,fry)
>  local L,k,x,y,fricx,fricy;
>  x:=X; y:=Y; fricx:=frx; fricy:=fry; L:=[x,y];
>  for k to n do
>        x := evalf(x+ cos(alpha)*fricx*0.98);
>        y := evalf(y+ sin(alpha)*fricy*0.98);
>        if (x+width>=xMax) then
>              fricx := -fricx;
>              x := evalf(xMax-height);
>        fi;
>        if (x-width<=xMin) then
>              fricx := -fricx;
>              x := evalf(xMin+height);
>        fi;
>        if (y+height>=yMax) then
>              fricy := -fricy;
>              y := evalf(yMax-width);
>        fi;
>        if (y-height<=yMin) then
>              fricy := -fricy;
>              y := evalf(yMin+width);
>        fi;
>        L:=L,[x,y]
>  od;
>  [L]
> end proc:
 
> T:=trajectoire(50,70,Pi/3,100,0,150,0,100,5,5,20,20):
> cadre:=rectangle([0,0],[150,100]): 
> A:=display([seq(balle(T[k][1],T[k][2],5),k=1..nops(T))],insequence=true,axes=none):
> display([cadre,A],scaling=constrained);
 
Revenir en haut de page
Thomas
Invité





MessagePosté le: 03 Juin 2006 20:50    Sujet du message: V5.1 Répondre en citant

Une quelconque chance que je puisse observer cette belle procédure avec Maple 5.1??
Revenir en haut de page
ALS
Invité





MessagePosté le: 04 Juin 2006 8:59    Sujet du message: Répondre en citant

Pas certain
Il faut posséder assez de RAM je pense...
Revenir en haut de page
GreG



Inscrit le: 02 Avr 2007
Messages: 6

MessagePosté le: 03 Avr 2007 13:22    Sujet du message: Répondre en citant

Salut,
J'ai testé cette programmation sur Maple et elle marche très bien. Cependant, j'aimerais savoir si il est possible de matérialiser les trajectoires par des traits (pour mettre en évidence des formes géométriques particulières).
Merci
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 03 Avr 2007 14:20    Sujet du message: Répondre en citant

Oui, il est toujours possible de peaufiner cette procédure. Greg, vous allez nous écrire ça j'en suis sur!!
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
GreG



Inscrit le: 02 Avr 2007
Messages: 6

MessagePosté le: 03 Avr 2007 20:00    Sujet du message: Répondre en citant

ALS a écrit:
Greg, vous allez nous écrire ça j'en suis sur!!
Euh j'ai pas tout saisi mais je vais essayer de me débrouiller tout seul Smile
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
GreG



Inscrit le: 02 Avr 2007
Messages: 6

MessagePosté le: 22 Avr 2007 16:51    Sujet du message: Répondre en citant

En retravaillant cette procédure, je n'arrive pas à comprendre comment fonctionnent les frottements, notamment lorsque tu fais "fricx := -fricx" Sad D'autre part, le 0.98 est-il le coefficient de frottements ?

Merci d'avance Smile
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 24 Avr 2007 8:38    Sujet du message: Répondre en citant

Bonjour,
fricx:=-fricx : on change le signe de cette variable pour assurer un rebond contre une des parois.
Quant au coeff 0.98, on peut sans problème le remplacer par 1:
x := evalf(x+ cos(alpha)*fricx);
y := evalf(y+ sin(alpha)*fricy);
A+
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
GreG



Inscrit le: 02 Avr 2007
Messages: 6

MessagePosté le: 26 Mai 2007 13:40    Sujet du message: Répondre en citant

Je pense avoir tout saisi merci Smile

Edit : en fait ma proc ne marche pas Sad il me répond "unable to parse" apres le "return".

trajectoire:=proc(X,Y,alpha,n,xmin,xmax,ymin,ymax,u,v)
x:=X: y:=Y: auxu:=u: auxv:=v: L:=[x,y]:
for k from 1 to n do
x:=evalf(x+cos(alpha)*auxu):
y:=evalf(y+sin(alpha)*auxv):
if (x>=xmax) then auxu:=-auxu: x:=evalf(xmax): end if:
if (x<=xmin) then auxu:=-auxu: x:=evalf(xmin): end if:
if (y>=ymax) then auxv:=-auxv: y:=evalf(ymax): end if:
if (y<=ymin) then auxv:=-auxv: y:=evalf(ymin): end if:
L:=L,[x,y]:
end do
return(plot([L]))
end proc;

merci d'avance
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 26 Mai 2007 15:36    Sujet du message: Répondre en citant

Rajouter un ; après le dernier end do.

Code:

trajectoire:=proc(X,Y,alpha,n,xmin,xmax,ymin,ymax,u,v)
x:=X: y:=Y: auxu:=u: auxv:=v: L:=[x,y]:
for k from 1 to n do
x:=evalf(x+cos(alpha)*auxu):
y:=evalf(y+sin(alpha)*auxv):
if (x>=xmax) then auxu:=-auxu: x:=evalf(xmax): end if:
if (x<=xmin) then auxu:=-auxu: x:=evalf(xmin): end if:
if (y>=ymax) then auxv:=-auxv: y:=evalf(ymax): end if:
if (y<=ymin) then auxv:=-auxv: y:=evalf(ymin): end if:
L:=L,[x,y]:
end do;
return(plot([L]))
end proc;
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
GreG



Inscrit le: 02 Avr 2007
Messages: 6

MessagePosté le: 26 Mai 2007 18:05    Sujet du message: Répondre en citant

ça ne marche pas, si je met ; apres end do, il me met "Error, reserved word `return` unexpected" ...

Edit: c'est bon sa marche Very HappyVery HappyVery Happy en fait j'ai mis ; après le end do et j'ai enlevé return (j'ai remplacé par plot([L])). Par contre je comprend toujours pas pourquoi ça marchait pas ^^


Dernière édition par GreG le 26 Mai 2007 18:20; édité 1 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 26 Mai 2007 18:13    Sujet du message: Répondre en citant

Je l'ai testé sur mon PC, tout marche parfaitement.
A+
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
GreG



Inscrit le: 02 Avr 2007
Messages: 6

MessagePosté le: 26 Mai 2007 18:21    Sujet du message: Répondre en citant

lol c'était surement mon Maple qui foirait ^^ merci à toi en tout cas Smile
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Autres questions Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.