Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

Animation maple

Posté par
gbsatti
14-04-09 à 21:43

Bonsoir,
J'essaye actuellement de programmer ceci en maple:
En discrétisant les points d'un cercle de centre (0,0) de rayon 1 en n points équidistants, on obtient alors un polygone noté Pn qui approche ce cercle, faire alors une animation où l'on voit ce polygone s'approcher du cercle. Écrire ensuite une procédure péri(n) qui calcul le périmètre du polygone.

Merci à tous ceux qui peuvent m'aider

Edit jamo : forum modifié.

Posté par
gui_tou
re : Animation maple 14-04-09 à 21:46

Salut !

Clairement, on va avoir besoin des racines n-ièmes de l'unité. Pour l'animation, tu peux utiliser l'option animate(, mais ici je lui préfère la commande display(

Pour péri(n), encore les complexes !

Sauf erreur, bien entendu

Posté par
gbsatti
re : Animation maple 14-04-09 à 22:30

salut gui_tou, j'essaye déjà de discrétiser le cercle, mais difficile parce que je ne comprend pas ce mot ^^. Ce que j'essayais de faire c'est tracer un cercle mais non continue et essayer de rejoindre les extrémités des points, c'est ça ?

Posté par
MatheuxMatou
re : Animation maple 14-04-09 à 22:49

Bonsoir

Ce que te dit Guillaume, c'est que ces points ont pour affixe exp(2*i*k*pi/n) pour k entier prenant n valeurs consécutives (par exemple de 0 à k-1)

Ce sont les sommet d'un polygone régulier à n sommets.

Alain

Posté par
infophile
re : Animation maple 14-04-09 à 23:08

Bonsoir

c1 := circle([0, 0], 1, color = blue);

c2 := polygon([seq([Re(exp((2*I)*k*Pi/n)), Im(exp((2*I)*k*Pi/n))], k = 0 .. n-1)], color = white);

Pour n := 4 ; on fait display(c1,c2) ; et on a ce que l'on veut.

Tu peux ensuite faire varier n dans une animation.

Posté par
infophile
re : Animation maple 14-04-09 à 23:24

Finalement j'ai fait autrement pour l'animation, j'ai pas trouvé de suite..

with(plottools); with(plots);

c1 := circle([0, 0], 1, color = blue);

frame := proc (n) options operator, arrow; display(c1, polygon([seq([Re(exp((2*I)*k*Pi/n)), Im(exp((2*I)*k*Pi/n))], k = 0 .. n-1)], color = white)) end proc;

ANIM := [seq(frame(n), n = 1 .. 20)];

display(ANIM, insequence = true);

(C'est du copier coller de ma feuille Maple).

Posté par
infophile
re : Animation maple 14-04-09 à 23:34

J'explique un peu :

On ne peut pas se servir de animate directement car ça prend comme argument un "plot".

Donc ici on va utiliser display en affichant les "frames" qui sont des images : display(c1,polygone à n arrêtes), et l'animation consiste à visualiser cette séquence d'images ANIM grâce à la commande insequence = true.

On peut aussi rajouter des effets de style dans ces display, par exemple thickness = 3 pour augmenter l'épaisseur des arrêtes.

Posté par
infophile
re : Animation maple 14-04-09 à 23:38

PS : Pas besoin d'une procédure pour calcule le périmètre de ces polygones, une fonction suffit puisque l'on connait la formule qui donne le périmètre d'un polygone régulier : P = 2nRsin(a/2) avec R le rayon (ici 1) et a l'angle au centre (2pi/n).

Posté par
gui_tou
re : Animation maple 14-04-09 à 23:39

Sinon,

>restart;
>L2:=[];L:=[];

> poly:=proc(n) local i,L:
   for i from 0 to (n) do
     L:=[op(L),[evalf(Re((exp(I*2*i*Pi/n)))),evalf(Im(exp(I*2*i*Pi/n)))]];
   od:
  end:

> plot(subsop(1=NULL,poly(5)));

Posté par
gbsatti
re : Animation maple 15-04-09 à 01:26

Merci a vous tous, en fait ce que je trouvais pas c'était l'affixe des points du polygone (j'ai essayé une méthode très farfelue qui ne donnait rien ).
Par contre je ne comprend pas pourquoi vous ramenez la partie réel et imaginaire de exp(2*i*k*pi/n).
J'ai essayé de les enlever et ça marche tout aussi bien ^^
encore merci

Posté par
infophile
re : Animation maple 15-04-09 à 09:32

guigui > ta procédure poly ça crée les coordonnées des sommets, mais qu'est-ce qui trace les segments ?

Et comment t'en fais une animation de ça ?

Posté par
gui_tou
re : Animation maple 15-04-09 à 13:24

J'ai pas réussi à tout caser dans une seule procédure mais ça doit être faisable

> restart; with(plots):

> L2:=[];L:=[];

> poly:=proc(n) local i,L,k:         # crée les coord des points sous forme de liste#
   L2:=[]:L:=[]:
     for i from 0 to n do
       L:=[op(L),[evalf(Re((exp(I*2*i*Pi/n)))),evalf(Im(exp(I*2*i*Pi/n)))]];
     od:
  end:

> anim:=proc(n) local k:                 # crée l'animation #
     for k from 1 to n do
       graphe[k]:=plot(poly(k),x=-1..1):
     od:
    display(seq(graphe[k],k=1..n),insequence=true,scaling=constrained,title=`kévin=n00b`);
   end:


Posté par
infophile
re : Animation maple 15-04-09 à 14:58

Oué en fait ça revient à ce que j'ai fait finalement tu crées les polygones dans une proc (moi une seq) et tu fais défiler les images dans un display, c'est tout pareil.

le titre

Posté par
gui_tou
re : Animation maple 15-04-09 à 15:03

Honnêtement j'avais pas regardé ta procédure



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !