Bonjour, je suis étudiant et ai un mini projet à rendre sous Matlab.
Le thème porte sur les objets fractals (de manière simplifiée), et j'ai de grosses difficultés à visualiser le moyen de répondre aux questions.
Je pense que ceci ne doit pas être d'un niveau très compliqué mais je suis débutant en Matlab (avec Octave) et j'aurais réellement besoin d'un aiguillage précis concernant le développement de mon code.
Je vous livre l'énoncé:
En gros on démarre avec un segment et on crée trois points de manière à diviser le segment en 3 et construire un triangle équilatéral dont la base est "au milieu" dudit segment, et dont le sommet est sur la médiatrice du segment.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 ?
Pour l'instant mon code est le suivant, pour sous_fct.m:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 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;
En gros pour le moment j'ai défini les points à tracer par la fonction principale, mais le problème qui subsiste c'est le moyen concret qui permet de lier les points en sortie de la première itération à un nouvel ensemble de points pour lesquels à chaque paire de points (chaque segment) il faudra créer trois nouveaux points, etc et ensuite tracer la figure finale...
J'espère avoir été suffisamment clair, toute aide m'est précieuse !
Merci de votre attention !
Partager