IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Dessiner des milliers de carrés


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Dessiner des milliers de carrés
    Bonjour,

    Je veux utiliser Matlab pour dessiner un grand nombre de carrés, en 2D et de tailles identiques, à partir des coordonnées (x,y) de leurs centres.
    Quelqu'un peut-il m'aider ?
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    As-tu essayé avec la fonction patch?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Je l'ai essayé pour dessiner un carré en introduisant les coordonnées de ces sommets, mais je ne sais pas l'utiliser pour dessiner des milliers de carrés, de tailles identiques, à partir des coordonnées (x, y) de leurs centres !!!!

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Si tu connais les centres et les dimensions du carré, tu peux facilement en déduire les coordonnées des sommets, non? Ou se situe le problème?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Bonjour,

    Crée une fonction qui te dessine un carré en (x,y) : cette fonction prendra donc entrée tes coordonnées et dessineras ton carré comme tu le souhaites en (x,y).

    Ensuite, tu appelles cette fonction dans deux boucles imbriquées (une sur x, et l'autre sur y).

    Pourquoi as-tu besoin de faire cela ?

    Cordialement,
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    J'ai 50 000 carrés à dessiner sur la même figure, en ayant les valeurs x et y de leurs centres, je peux effectivement calculer les coordonnées des sommets..ça fera au total 200 000 valeurs (x, y)!!!.
    Mais comment générer une boucle, par exemple, en utilisant cette fonction pour éviter d'introduire les coordonnées une par une ???

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour tachmou,
    J'ai rédigé mon précédent message sans avoir lu tien.Je vais essayer...
    C'est pour fabriquer un masque de lithographie.

  8. #8
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Traite les problèmes les uns après les autres. Fais comme je t'ai dit, je t'assure que tu y arriveras et que ça va marcher, fais moi confiance.

    Pour l'instant donc, écris une fonction qui en entrée prends les coordonnées x et y du centre, la taille d'un côté du carré, et ce qu'on appelle le "handle" d'un axe.

    Crée donc deux fichiers :

    main.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
     
    clear all;
    close all;
    clc;
    f = figure;
    ma_zone_graphique = axes('Parent',        f, ...
                             'outerposition', [0.00, 0.25, 0.75, 0.25]);
    hold(ma_zone_graphique, 'on'); % te permettra de dessiner plusieurs fois dedans
     
    x = 2;
    y = 3;
    cote = 1;
    dessiner_carre(ma_zone_graphique, x, y, cote)
     
    % cla(ma_zone_graphique); % te permettra d'effacer quand tu en auras besoin
    dessiner_carre.m
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function = dessiner_carre(ma_zone_graphique, x, y, cote)
    
    % Ecris ici le code pour dessiner un carré comme tu le souhaites en fonction des variables "ma_zone_graphique" (qui est le handle de ton axes), "x", "y" et "cote"
    
    end
    Tu exécuteras "main" pour tester ta fonction.
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Ce serait plus simple d'utiliser la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p = patch('Faces',faces,'Vertices',verts)
    en calculant toutes les coordonnées des sommets (verts) ainsi que la table de connectivité (faces). Cela permet de tracer les carrés en 1 fois. Pour plus d'info, voir la doc de patch.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  10. #10
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Je ne suis pas d'accord avec toi, mais ceci est une question d'affinité : personnellement je comprendrais plus facilement si j'écris ma propre fonction qui fait ce que je veux avec des fonctions de base plutôt que d'utiliser des fonctions qui sont complexes à comprendre et qu'on ne voit pas comment utiliser, d'autant que ça utilise de multiples notions qu'on ne maîtrise pas quand on débute. En plus de ça, la doc matlab est vraiment mal faite pour des débutants (pardon, c'est sorti tout seul), surtout pour des fonctions aussi fournies que celle-là.

    C'est peut-être un peu plus lourd, mais au moins, on avance et on comprend ce qu'on fait. Alors que la fonction patch peut vraiment rebuter, et c'est normal. Après, c'est à lui d'opter pour la solution qui lui plaît le plus.

    Même aujourd'hui je pense que j'irais plus vite en suivant cette voie plutôt que d'utiliser cette fonction pour ce problème...

    Autres exemples :
    - j'ai recodé mes ascenseurs personnels plutôt que d'utiliser ceux de matlab... résultat : plus rapide, ça fait ce que je veux et ça marche aussi au passage... ça m'a pris une journée, alors que j'avais passé plusieurs jours à essayer de piger leurs trucs... en plus à l'utilisation c'est merdique, à lire c'est hyper rebutant avec leurs acronymes mal choisis alors qu'avec ce que j'ai fait, c'est rapide simple, compréhensible et efficace. Déjà quelques utilisateurs autres que moi bien contents de les utiliser en interne.
    - ils fournissent un outil pour récupérer les index des points... le "datacursormode"... ce truc est tellement mal foutu (pour ne pas dire creux) que je ne le vois utilisé nulle part, j'ai tenté de l'utiliser j'ai perdu du temps pour au final arriver à faire un truc qui marchouille mais qui rame dès que tu mets plus de dix points... j'ai laissé tombé cette histoire, mais à refaire, je me retape les fonctions de base qui vont récupérer toutes les données dessinées dans un axe et faire moi-même la gestion de ces objets.

    Mais je dévie un peu. Quoiqu'il en soit, c'est une question de point de vue. Sur le principe, je suis d'accord avec toi, mais à condition qu'il y aie une vraie doc alors, parce que - du moins personnellement - il m'est impossible de deviner les possibilités d'une fonction...
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    C'est peut-être une question d'expérience alors parce que je trouve que la doc est plutôt bien foutu, enfin surtout pour un usage pas trop poussé de matlab (donc bien foutue pour les débutants, c'est pour les experts que je trouve la doc frustrantes). J'ai pas fait de stat mais je suis sûr qu'au moins 80% des questions de ce forum trouvent une réponse explicite dans la doc.

    Et pour la fonction patch, c'est pareil, je ne vois pas ce que tu veux qu'ils mettent de plus : les exemples sont très parlant avec des images et tout... :
    % The Vertices property contains the coordinates of each
    % unique vertex defining the patch. The Faces property
    % specifies how to connect these vertices to form each
    % face of the patch.
    bon ok sur le dessin, c'est des triangles, mais comprendre comment générer un carré ne me semble pas inaccessible non plus.
    Perso quand j'ai découvert patch, ça m'a bien aidéet je l'utilise maintenant systématiquement pour tracer des objets géométriques.

    Maintenant là ou je suis d'accord avec toi, c'est que l'on apprends mieux en décomposant les problèmes et donc en écrivant soi-même ses propre fonctions.
    Et je suis d'accord avec toi sur le fait que certaines fonctions matlab sont pourries, surtout pour les graphiques, c'est pour ça que j'ai horreur des graphiques avec matlab... Mais tes deux exemples n'en font pas une généralité.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  12. #12
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Je pense qu'on est d'accord en fait.

    Mais justement, le "patch" fait partie des trucs merdiques je trouve. Leur exemple n'est même pas expliqué (ou du moins ils n'expliquent pas ce qu'il faudrait expliquer selon moi). La manière de gérer les sommets avec les x et y ainsi que l'ordre... bah c'est pas simple à comprendre et c'est pas évident : si en plus de ça tu débutes dans matlab, il est hyper simple de s'y perdre parce que tu te mélanges les pédales entre colonnes lignes x y ordonnées abscisse etc... et c'est clairement dit : nulle part.

    Bref, j'espère quoi qu'il en soit qu'Obaïd va trouver son bonheur dans les réponses du dessus.

    @ Obaïd :

    et

    dans le Command Window sont des commandes très utiles pour toi je pense, au cas où tu ne connaitrais pas.

    ps: complètement HS mais j'arrive pas à bosser en cette fin d'après-midi, c'est trop la lutte
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  13. #13
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par tachmou Voir le message
    ou du moins ils n'expliquent pas ce qu'il faudrait expliquer selon moi.
    Simple curiosité, tu pourrais développer?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  14. #14
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    J'ai édité mon message, désolé. Tu trouveras donc la réponse juste après le message que tu as cité.

    ...

    Et je rajouterais : pourquoi tronquer les noms ? Même si tu es anglais, ça veut dire quoi vert, fac, tcolor... ? Cela m'agace, pour moi, eh bien ça veut dire : vertical, faculty and time-coloration voilà. Pourquoi ne pas avoir directement mis vertice, face et color ?

    Personnellement, j'ai développé un code en interne, mis en gestion de configuration : du coup, n'importe qui peut l'améliorer. Je n'ai pas fait une seule doc mis à part les quelques commentaires dans le code, personne ne m'a jamais posé de question... et pourtant le code évolue tout seul (bon, j'avoue, une seule personne de plus a réellement contribué, mon principal tuteur en l’occurrence mais quand même )

    Je m'emporte là, mais en même temps j'ai trop mal au crâne pour bosser... d'ailleurs mes chefs sont partis allez hop j'en profite je m'enfuis aussi. En plus il fait moche (quoi c'est pas une raison ? sisi je vous assure que si)
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  15. #15
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Merci à vous tous !

  16. #16
    Invité
    Invité(e)
    Par défaut
    Tronquer les noms ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p = patch('Faces',faces,'Vertices',verts)
    Il me semble que faire le rapprochement entre verts et Vertices est à la portée d'un débutant Non ? Ce n'est pas comme s'ils avaient choisi a,b,c comme on peut le voir dans tout code de débutant.

    Ensuite quelque soit le langage, quel débutant n'a pas saisi un code optimisé de haut niveau ? Ou a réinventé la roue par manque de connaissance ?
    Documentation mal faite...cela n'engage que toi, personnellement je la trouve très fournie par rapport à bien d'autres. Elle aurait pu seulement expliquer les différentes syntaxes sans fournir aucun exemple, alors qu'on peut apercevoir moulte exemples avec leur rendu visuel.
    Elle possède de plus nombre d'autres cours montrant tout le cheminement en parallèle avec la théorie, des démos montrant l'utilisation des toolbox, ainsi que l'utilisation générale de MATLAB...
    Alors on repassera sur le côté pas adapté aux débutants.

  17. #17
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Désolé si ça a dévié, c'est clairement de ma faute.

    Obaïd, tu as réussi à résoudre ton problème ?

    Si oui, dis nous comment tu t'y es pris ^^

    Sinon, dis nous où tu bloques.
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. dessiner des milliers de lignes 2D
    Par rdh123 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 21/10/2009, 18h44
  2. Réponses: 7
    Dernier message: 08/06/2009, 12h41
  3. [Graphic] Dessiner des hachures
    Par sylverspoon dans le forum 2D
    Réponses: 7
    Dernier message: 22/03/2006, 21h46
  4. [Débutant] dessiner des carrés
    Par Dark-Lab dans le forum 2D
    Réponses: 13
    Dernier message: 27/08/2004, 10h50
  5. dessiner des graphiques
    Par mial dans le forum 2D
    Réponses: 6
    Dernier message: 26/04/2004, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo