exercices de Matlab (Octave)

Publié le 2 déc. 2010 il y a 13A par Anonyme - Fin › 6 déc. 2010 dans 13A
5

Sujet du devoir

Objectifs: écrire un programme en un minimum de lignes qui trace une figure géométrique paramétrable à l'aide d'une fonction (sous_fct.m) réalisant l'opération de base suivante:

Etant donnés deux points a=[xa,ya] et b=[xb,yb], on construit:
-les deux points c et d qui sont aux 1/3 et 2/3 de [AB]
-le point e tel que c, e et d forment un triangle équilatéral

Le programme principal (pgm_princ.m) permet à l'aide de boucles, d'appeler la fonction sous_fct.m pour réaliser la figure complète définie par les paramètres initiaux (nombre d'itérations et figure d'initialisation), puis fait tracer la figure.

Le code complet sera constitué d'une fonction principale: pgm_princ.m et d'une sous-fonction: sous_fct.m

Détails sur les fonctions:
Fonction "sous_fct.m":
Cette fonction prend en paramètres d'entrée le couple de points [a,b] puis rend en sortie la liste de points rangés dans l'ordre suivant: (c,e,d)

Fonction "pgm_princ":
Cette fonction principale prend le nombre d'itérations en entrée, une liste de points définissant la figure initiale et rend en sortie la liste des points calculés.
Le prototype de la fonction sera le suivant: liste=pgm_princ(n,pts).

NB: Il faut gérer intelligemment la mémoire pour stocker tous les points calculés à l'itération n.
Pour cela il faut avoir en tête que chaque segment de la figure produit 3 points supplémentaires, combien de points a-t-on au total si l'on a L segments au départ (bornes des segments inclus) ?
Si on réitère cette opération n fois, combien de segments obtient-on ?

Où j'en suis dans mon devoir

function[c,e,d] = sous_fct(a,b)

xa = a(1,1);
ya = a(1,2);

xb = b(1,1);
yb = b(1,2);

xc = (1./3)*(xb + xa);
yc = (1./3)*(yb + ya);

xd = (2./3)*(xb + xa);
yd = (2./3)*(yb + ya);

xe = cos(120).*(xa - xc) - sin(120).*(ya - yc) + xc;
ye = sin(120).*(xa - xc) + cos(120).*(ya - yc) + yc;



0 commentaire pour ce devoir



Ils ont besoin d'aide !

Il faut être inscrit pour aider

Crée un compte gratuit pour aider

Je m'inscrisOU

J'ai déjà un compte

Je me connecte