|
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
juda Invité
|
Posté le: 26 Mai 2006 16:16 Sujet du message: trajectoire d'une boule de billard... |
|
|
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é
|
Posté le: 27 Mai 2006 16:45 Sujet du message: |
|
|
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é
|
Posté le: 03 Juin 2006 20:50 Sujet du message: V5.1 |
|
|
Une quelconque chance que je puisse observer cette belle procédure avec Maple 5.1?? |
|
Revenir en haut de page |
|
|
ALS Invité
|
Posté le: 04 Juin 2006 8:59 Sujet du message: |
|
|
Pas certain
Il faut posséder assez de RAM je pense... |
|
Revenir en haut de page |
|
|
GreG
Inscrit le: 02 Avr 2007 Messages: 6
|
Posté le: 03 Avr 2007 13:22 Sujet du message: |
|
|
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 |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 03 Avr 2007 14:20 Sujet du message: |
|
|
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 |
|
|
GreG
Inscrit le: 02 Avr 2007 Messages: 6
|
Posté le: 03 Avr 2007 20:00 Sujet du message: |
|
|
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 |
|
Revenir en haut de page |
|
|
GreG
Inscrit le: 02 Avr 2007 Messages: 6
|
Posté le: 22 Avr 2007 16:51 Sujet du message: |
|
|
En retravaillant cette procédure, je n'arrive pas à comprendre comment fonctionnent les frottements, notamment lorsque tu fais "fricx := -fricx" D'autre part, le 0.98 est-il le coefficient de frottements ?
Merci d'avance |
|
Revenir en haut de page |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 24 Avr 2007 8:38 Sujet du message: |
|
|
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 |
|
|
GreG
Inscrit le: 02 Avr 2007 Messages: 6
|
Posté le: 26 Mai 2007 13:40 Sujet du message: |
|
|
Je pense avoir tout saisi merci
Edit : en fait ma proc ne marche pas 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 |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 26 Mai 2007 15:36 Sujet du message: |
|
|
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 |
|
|
GreG
Inscrit le: 02 Avr 2007 Messages: 6
|
Posté le: 26 Mai 2007 18:05 Sujet du message: |
|
|
ça ne marche pas, si je met ; apres end do, il me met "Error, reserved word `return` unexpected" ...
Edit: c'est bon sa marche 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 |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 26 Mai 2007 18:13 Sujet du message: |
|
|
Je l'ai testé sur mon PC, tout marche parfaitement.
A+ |
|
Revenir en haut de page |
|
|
GreG
Inscrit le: 02 Avr 2007 Messages: 6
|
Posté le: 26 Mai 2007 18:21 Sujet du message: |
|
|
lol c'était surement mon Maple qui foirait ^^ merci à toi en tout cas |
|
Revenir en haut de page |
|
|
|
|
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
|
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.
|