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

Mathématiques Discussion :

Distance d'un point à un segment de droite


Sujet :

Mathématiques

  1. #21
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Dist2Pnts(X1, Y1, X2, Y2 : Double):Double;
    Begin
      Result := Abs(Sqrt(Sqr(X2-X1) + Sqr(Y2-Y1)));
    end;

  2. #22
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par defluc Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Dist2Pnts(X1, Y1, X2, Y2 : Double):Double;
    Begin
      Result := Abs(Sqrt(Sqr(X2-X1) + Sqr(Y2-Y1)));
    end;
    où as-tu pris cette distance ?????

    d'une part c'est faux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d = sqrt ( ((xa-xb)*(xa-xb)) + ((ya -yb)*(ya-yb)) )
    et dans ton algo précédent tu reprends SQR du resultat

    note : à moins que sqr en Pacal veuille dire carré, mais j'en doute
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #23
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    En Delphi, Sqr est bien le carré d'un nombre alors que Sqrt est sa racine carrée.

  4. #24
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    ooops ton erreur vient de là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      ParamR := ((Xpnt - Xb)*(Xe - Xb) + (YPnt - Yb) + (Ye - Yb))/Sqr(Len);


    c'est pas un +, mais un *



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      ParamR := ( ((Xpnt - Xb)*(Xe - Xb)) + ((YPnt - Yb) * (Ye - Yb)))/Sqr(Len);
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #25
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    La formule de Dist2Pnts n'est pas fausse: attention à la différence SQRT (racine) et SQR (carré) . (par contre le ABS ne sert à rien)

    Mais effectivement, il ne faut pas employer "Sqr(Len)" mais directement "Len" dans DistPntSegm.

    non non c'est correct, le dénominateur est le carré de la distance (mais c'est la formule qui a un bug, voir ci-dessus)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  6. #26
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    non non c'est correct, le dénominateur est le carré de la distance (mais c'est la formule)
    Oui, j'avais pas vu qu'il remultipliait le résultat par "Len". C'est pas vraiment optimal !!
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #27
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Points : 61
    Points
    61
    Par défaut Remontee du Post
    Bonjour,
    Je remonte ce post pour poser une petite question :
    Je vais peut être commence par le contexte..
    C'est en fait un problème bien connu (j'ai l'impression).
    J'ai un point qui se trouve dans un polygone (non croise) et je veux savoir a quelle distance minimum il se trouve du bord. Le but étant de faire sonner une alarme quand le point (qui est donc en mouvement) se trouve a une distance inférieure a une constante définie du bord.
    Voila pour la première partie.
    J'ai lu avec intérêt http://www.exaflop.org/docs/cgafaq/ a la section 1.02 mais il y a quelquechose que je ne comprend pas pourquoi faut-il diviser le produit scalaire de AC et AB par la norme au carre de AB ?
    (1) AC dot AB
    r = ---------
    ||AB||^2
    N'est-il pas possible de tout simplement faire le produit scalaire de AB et AC => si il est négatif alors la plus petite distance est AC, s'il est positif on test AC.CB s'il est négatif la plus petite distance est CB sinon on calcule le projeté et la distance CP (et la c'est pas de la tarte avec des divisions des racines carrées et tout et tout )
    J'ai aussi lu ce sujet : http://www.developpez.net/forums/d53...ygone-convexe/
    Mais j'avoue n'avoir pas tout compris..
    Cette histoire de comparer d'abord la distance point sommet ne mène pas je pense...
    Désolée pour le pitoyable dessin mais en gros tout ca pour dire que si on ne
    considère que les sommets c'est pas bon.
    ...... __
    ....../....\
    ...../......\
    ..../ x...../
    .../........\
    ../..........\
    .|............\
    .|________\

    Ca j'ai pas compris :
    Pour chercher la distance de O au cotés du polygone P_i pour 1<=i<= n. On fait comme si P_{n+1} valait P_1. Le point P_i le plus proche de O n'a rien à voir avec la réponse car si deux sommets consécutifs sont trés éloignés de 0 mais symétriques par rapport à 0 , la réponse sera 0 et obtenu pour ce côte et il pourra y avoir des points P_i beaucoup plus proches.
    Je propose de chercher le signe du produit scalaire r_i=P_iO* P_i P_{i+1} et aussi le signe de s_i=P_{i+1}O* P_i P_{i+1} et enfin le signe du produit t_i= r_i* s_i.
    Si t_i < 0 alors on doit chercher la distance d_i de O à la droite P_i P_{i+1}.
    Si t_i >= 0 alors on ne fait rien.
    Enfin on cherche le minimum des distances de O à tous les sommets P_i qu'on compare avec le minimum des d_i. La réponse est le minimum du tout.
    Mais si ca marche ca serait cool car pas de division ni de racine carre !
    Voili voulou..
    Si c'est mieux d'ouvrir un autre sujet dites le moi..
    Merci pour votre aide

  8. #28
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Citation Envoyé par defluc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function TMapForm.DistPntSegm(XPnt, YPnt, Xb, Yb, Xe, Ye : Double) : Double;
    Var
     Len, ParamR, ParamS, X, Y : Double;
    begin                               
      Result := 999999;
      ...
    end;
    Je ne crois pas que le lien donné par souviron signale un cas particulier pour lequel la distance vaudrait 999999. Il faut suivre un raisonnement plutôt que de poluer l'algo avec des valeurs arbitraires.

    Citation Envoyé par Alikendarfen
    Ca ce n'est qu'une question de convention, non ? Tout dépend de l'énoncé et de ce qu'on considère comme valide comme distance point / segment.
    Je ne vois pas quelle est la convention qui t'interdit de suivre le raisonnement du post n°3 (ou du lien donné par souviron), surtout que l'auteur a fait l'effort de proposer un code dans le post n°5, un code qui, tout comme celui de pseudocode, a le bon goût de ne renvoyer aucune valeur arbitraire.

    Citation Envoyé par Saita
    Désolée pour le pitoyable dessin mais en gros tout ca pour dire que si on ne considère que les sommets c'est pas bon.
    ...... __
    ....../....\
    ...../......\
    ..../ x...../
    .../........\
    ../..........\
    .|............\
    .|________\
    On avait dit convexe.


    N'ayant pas participé à ce fil de discussion c'est en toute objectivité que je peux dire combien il est désolant que vous ne prêtiez pas davantage de crédit et d'attention à l'excellente qualité des réponses qui vous sont faites.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  9. #29
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    Bonjour SpiceGuid,
    J'ai remonte cette conversation d'il y a un an car elle correspondait en partie au probleme que je voulais evoquer.
    Mes polygones ne sont pas tous convexes en effet, il peuvent ne pas l'etre.
    Je ne suis pas sure que defulc ni Alikendarfen ne liront tes remarques car le sujet est un peu vieux A moins que j'ai fait erreur et que ces remarques ne s'appliquait a moi..
    Cette histoire de comparer d'abord la distance point sommet ne mène pas je pense...
    J'aurais peut etre du rajouter a la fin de la phrase "pour mon cas".
    Car au debut j'avais bien precise :
    J'ai un point qui se trouve dans un polygone (non croise)
    pas convexe..
    Peut etre aurais-je du ouvrir un autre sujet pour eviter la confusion avec les remarques des post precedents..
    A propos du post 3, il rejoins ma question car il me semble que c'est a peu pres la meme demarche :
    N'est-il pas possible de tout simplement faire le produit scalaire de AB et AC => si il est négatif alors la plus petite distance est AC, s'il est positif on test AC.CB s'il est négatif la plus petite distance est CB sinon on calcule le projeté et la distance CP (et la c'est pas de la tarte avec des divisions des racines carrées et tout et tout )
    N'ayant pas participé à ce fil de discussion c'est en toute objectivité que je peux dire combien il est désolant que vous ne prêtiez pas davantage de crédit et d'attention à l'excellente qualité des réponses qui vous sont faites.
    Je prete beaucoup de credit a l'excellente qualite des reponses sinon je ne posterai pas ici ! Mais excuses moi, si il y a des choses que je n'ai pas compris, ben j'aime bien poser des questions... Ais-je tort ?

  10. #30
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Saita Voir le message
    N'est-il pas possible de tout simplement faire le produit scalaire de AB et AC => si il est négatif alors la plus petite distance est AC, s'il est positif on test AC.CB s'il est négatif la plus petite distance est CB sinon on calcule le projeté et la distance CP (et la c'est pas de la tarte avec des divisions des racines carrées et tout et tout )
    C'est l'algo que j'ai donné au post #2

    Mais si ca marche ca serait cool car pas de division ni de racine carre !
    Si ton problème est de savoir quand un point est trop proche d'un bord, tu peux comparer les distances "au carré". Comme cela, tu n'as pas a calculer les racines carrés.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #31
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    Ok je voulais juste etre sure pour le produit scalaire car je n'avais pas compris ca :
    (1) AC dot AB
    r = ---------
    ||AB||^2
    donc je voulais etre sure de n'etre pas passe a cote de qqch d'important.

    Ta remarque est tres bonne pseudocode ! En effet s'il ne s'agit que de comparaison autant tout elever au carre..
    Mais on voudrait aussi la distance "exacte" ( mais bon, c'est juste une info au moins mon alarme sera precise )

    La derniere question (pour le moment) etant : vu que mon polygone n'est pas convexe, y aurait-il un autre moyen que de tester la distance du point a chaque cote du polygone et de prendre le minimum..
    Merci pseudocode en tout cas pour ta reponse

  12. #32
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Saita Voir le message
    La derniere question (pour le moment) etant : vu que mon polygone n'est pas convexe, y aurait-il un autre moyen que de tester la distance du point a chaque cote du polygone et de prendre le minimum..
    Disons que c'est la méthode la plus simple.

    On peut toujours optimiser pour éviter de tester certains segments mais a mon avis le jeu n'en vaut pas la chandelle sur des "petits" polygones.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #33
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    Et sur des petits polygones a 1000 sommets ?

  14. #34
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    1000 c'est encore petit...

    vu que c'est une distance, un test sur Dx ou Dy éliminera déjà un bon nombre.

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for ( i = 0 ; i < NSommets ; i++ )
    {
       if ( Dx <= Dist )
         if ( Dy <= Dist )
           {
           }
    }


    Ensuite, comme pour tout algo comprenant des comparaisons de distances, le mieux est de tout faire par rapport au carré, et ne se servir de la racine qu'à la toute fin, lorsqu'on veut vraiment calculer la distance..


    L'autre solution est de trier les sommets, mais il faudra alors calculer au moins N*Log(N) distances (par un qsort par exemple)..

    Là tu auras moins que N..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  15. #35
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    Merci souviron34 de te joindre a la discussion
    Ton idée me parait bonne si mon polygone est convexe... Or s'il ne l'est pas j'ai un doute que cela marche. Tout le problème est la.
    Dans le "pire" des cas, mon point est situe sur la médiatrice du segment qui lui est le plus proche, a ma distance critique.
    Dans ce cas, la distance du point a l'un des 2 sommets est racine(dist²+a²), en considérant a la distance entre mes deux sommets divises par deux. Si je ne me trompe pas...
    Le problème étant que a varie en fonction de chaque segment du polygone... Donc "a l'aveuglette' je ne peux pas me mettre de valeur fixe en fonction uniquement de dist. Et si je voulais calculer le a le plus grand...Ça reviendrait a faire aussi un algorithme de calcul de distance ce qui serait a mon avis un peu idiot, non ?

    Je n'ai pas encore la notion de ce qui est grand ou pas en informatique il me semblais qu'en dépassant le millier ça commençait a être "grand".

  16. #36
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Saita Voir le message
    Merci souviron34 de te joindre a la discussion
    Ton idée me parait bonne si mon polygone est convexe... Or s'il ne l'est pas j'ai un doute que cela marche. Tout le problème est la.
    Dans le "pire" des cas, mon point est situe sur la médiatrice du segment qui lui est le plus proche, a ma distance critique.
    Est-ce que ton point et ton polygone peuvent avoir des coordonnées quelconques (décimales, infinies, ...) ou alors est-ce qu'on est dans le cas d'une image avec des coordonnées "pixel" (entier entre 0 et Largeur/Hauteur) ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  17. #37
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2009
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    Mes coordonnees sont des coordonnes latitude, longitude avec 2 decimales de precision apres la virgule. Pourquoi ?

  18. #38
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    il y a une idée extrêmement simple, à mon avis :

    une boucle sur tous les sommets, en ne gardant qu'un point par (le plus proche) par quadrant.

    Puis juste une vérification sur ces 4 points lesquels se suivent : si il ne se suivent pas, ce n'est pas un côté.

    Alors on calcule effectivement N distances....


    Code C : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    int      ind[4], i1, j1 ;
    double dmax[4], d, d1 ;
     
     
    /* Initialisation */
    for ( i = 0 ; i < 4 ; i++ )
       dmax[i] = DBL_MAX ;
     
     
    /* Calcul du point le plus proche par quadrant */
    for ( i = 0 ; i < NSommets ; i++ )
     {
         d = ((xi - x)*(xi-x)) + (yi - y)*(yi-y);
     
         if ( yi < y )
           {
              if  ( xi < x )
                {
                   if ( d < dmax(0) )
                      {
                         dmax(0) = d ;
                         ind[0] = i ;
                      }
                 }
              else
                {
                   if ( d < dmax(1) )
                      {
                         dmax(1) = d ;
                         ind[1] = i ;
                      }
                }
            }
          else
            {
              if  ( xi < x )
                {
                   if ( d < dmax(2) )
                      {
                         dmax(2) = d ;
                         ind[2] = i ;
                      }
                 }
              else
                {
                   if ( d < dmax(3) )
                      {
                         dmax(3) = d ;
                         ind[3] = i ;
                      }
                }
            }
    }
     
     
    /* Vérification du segment le plus proche */
    i1 = -1 ;
    j1 = -1 ;
    d1 = DBL_MAX ;
     
    for ( i = 0 ; i < 4 ; i++ )
       {
            for ( j = 0 ; j < 4 ; j++ )
              {
                  if ( i != j )
                    {
                        if ( iabs(ind[i]-(ind[j]) == 1 )
                           {
                                 d = distance_point_segment (x, y, x[ind[i]], y..)
                                 if ( d < d1 )
                                   {
                                        i1 = i ;
                                        j1 = j ;
                                        d1 = d ;
                                   }
                           }
                    }
              }
       }

    Est-ce qu'il peut y voir des cas où ça ne marche pas ??
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  19. #39
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Saita Voir le message
    Mes coordonnees sont des coordonnes latitude, longitude avec 2 decimales de precision apres la virgule. Pourquoi ?
    le plus simple est, à mon avis, de prendre le problème en sens inverse


    Tu as ton polygone de départ..

    Tu calcules un "faux" polygone dézoomé (avec la distance en moins).
    Et là, tout ce que tu as à faire, c'est vérifier si ton point est dans le premier et pas dans le deuxième..

    Avec les algos cités (pt-in-polygon) ça se fera vite...


    Moi je l'avais fait en sens inverse dans un soft :

    j'avais une région polygonale, et je mettais une alerte quand le point était à l'intérieur d'une certaine distance du polygone. Ce que j'avas fait était calculer au départ le nouveau polygone (avec l'ajout de la distance), et simplement vérifier ensuite que le point était dans ce polygone..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  20. #40
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Est-ce qu'il peut y voir des cas où ça ne marche pas ??
    je me répond tout seul : oui
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Calcul de distance entre un point et un segment
    Par orland dans le forum Mathématiques
    Réponses: 7
    Dernier message: 03/01/2013, 16h13
  2. Réponses: 1
    Dernier message: 02/01/2013, 15h13
  3. distance entre un point et un segment
    Par 3aychoucha dans le forum C++
    Réponses: 6
    Dernier message: 11/08/2011, 18h26
  4. Segments de droites à partir de points
    Par MetalGeek dans le forum Mathématiques
    Réponses: 7
    Dernier message: 18/02/2009, 12h43
  5. [MATH] Point par rapport à une droite
    Par teska dans le forum Mathématiques
    Réponses: 6
    Dernier message: 14/05/2003, 16h11

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