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

Python Discussion :

Tracer une droite dans un quadrillage


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut Tracer une droite dans un quadrillage
    Bonjour,

    je fais appel à vous car je suis en face d'un problème, et je ne sais pas quels sont les outils Python avec lesquels je peux le résoudre... Je m'explique :

    On considère un mobile qui se déplace dans un espace 2D. On discrétise cet espace par pas de 1 mètre (par exemple), on obtient donc un quadrillage (une matrice en fait). Toutes les secondes, on récupère une information sur le mobile : une direction, en degrés, qui correspond à la direction probable d'une antenne émettrice (je ne m'étends pas sur le sujet, on sait que l'on peut récupérer cette info).

    J'aimerais pouvoir, à chaque seconde, tracer une droite dans mon quadrillage correspondant à la direction récupérée, et incrémenter de 1 chacune des cases que ma droite traverse. Ainsi, si on répète ce procédé sur plusieurs secondes, on sait que les cases qui ont la plus grande valeur correspondent à l'endroit le plus probable où se trouve mon antenne émettrice.

    Comment puis-je résoudre un problème pareil sous Python ? Y a-t-il des outils adaptés pour le traiter (c'est un problème plus "graphique" que calculatoire...) ?

    Merci d'avance pour votre réponse.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par AladdinSane Voir le message
    Comment puis-je résoudre un problème pareil sous Python ? Y a-t-il des outils adaptés pour le traiter (c'est un problème plus "graphique" que calculatoire...) ?
    Toutes les bibliothèques graphiques ont un objet de type canvas qui permet de dessiner rectangles et lignes. Vous pouvez utilisez la bibliothèque standard tkinter ou installer celle de votre choix.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité
    Invité(e)
    Par défaut Tracer une droite d'après un angle
    Bonjour,

    on considère une grille définie par les vecteurs x = [0, 1, 2, ..., 100] et y = [0, 1, 2, ..., 100].

    J'ai un point de coordonnées (x0, y0), et un angle θ donné (en degrés, pas rapport au nord).

    J'aimerais pouvoir récupérer les coordonnées des points composant la droite qui part de (x0, y0) avec l'angle θ, et uniquement ceux contenus dans ma grille (autrement dit dont les coordonnées sont entre 0 et 100).

    Comment puis-je faire pour obtenir un tel résultat ?

    J'avais réussi à obtenir quelque chose, mais ça prend bien trop de temps... En fait, je cherchais un deuxième point que la droite traverse, puis j'appliquais l'algorithme de Bresenham entre ces deux points, mais généralement le deuxième point est en dehors de ma grille alors c'est un peu le bordel, il faut ensuite jeter tous ces points et on les a calculés pour rien... S'il y a une méthode pour ne pas avoir à passer par du Bresenham entre deux points, je suis preneur.

    D'avance merci.

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Je verrais un truc comme ça :
    t est l'angle de ta droite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    pour x = 0 a 100
      Delta_x = x-x0
      delta_y = delta_x * tan(t) 
      y = y0 + delta_y
      si y = arrondi(y,0) alors   
         // y est un entier ,  coup de chance !
         print ( x,y )
      fin
    fin
    A Vérifier. J'hésite entre la fonction tan() ou cotan().
    Si ce traitement est trop lent, alors il va falloir réfléchir fortement !
    Est-ce que x0 et y0 sont des entiers, ou des nombres quelconques ?
    Et je pense que ta question serait mieux dans un sous-forum algorithme ou mathématiques.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Haha, c'est malin, mais il se peut très bien que je ne trouve pas de valeur entière pour y

    x0 et y0 sont entiers, oui !

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Tout à fait , assez souvent, il n'y aura pas de valeurs entières pour (x,y) ; Dans ce cas, il faut en inventer ? en faisant des approximations ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Bonjour,

    Si on considère que la mesure est faite «au centre» de la case, qu'il n'y a pas de marge d'erreur sur la mesure de l'angle alors ta droite traverse une autre case si au moins deux coins sont de part et d'autre de la droite, avec les cas particuliers où la droite ne coupe qu'un coin ou carrément un côté.

Discussions similaires

  1. Tracer une droite dans une intervalle 3D
    Par AlphaJ dans le forum Mathématiques
    Réponses: 5
    Dernier message: 22/11/2007, 11h06
  2. Tracer une droite verticale
    Par jmbonnaz dans le forum MATLAB
    Réponses: 1
    Dernier message: 16/05/2007, 11h10
  3. Tracer une ligne dans une Listbox
    Par craryb dans le forum MFC
    Réponses: 2
    Dernier message: 09/03/2007, 14h06
  4. Tracer une courbe dans un formulaire ?
    Par jessy212 dans le forum Access
    Réponses: 5
    Dernier message: 04/09/2006, 16h46
  5. Tracer une ligne dans une matrice
    Par S4sha dans le forum MATLAB
    Réponses: 4
    Dernier message: 30/05/2006, 15h10

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