Aller au contenu

VERIFIER SI COORDONNEES D'UN POINT EST DANS UN RECTANGLE


Messages recommandés

Posté(e)

hello.

je cherche une méthode ou un bout de lisp permettant de vérifier si les coordonnées d'un point ou de points est a l'intérieur ou sur une polyligne rectangle.

je vais en avoir quelque millier ( de points ) je pense a vérifier par rapport a des centaines de polylignes.

j'avais pensé a cette méthode la :

récupérer les coordonnées des points de mon rectangle.  les "x" et "y" inférieurs, les "x" et "y" supérieurs.

a vérifier si le "x" du point etait a la fois supérieur aux "x" inférieurs du rectangle et inférieur aux "x" supérieurs du rectangle.

pareil pour les "y", si le cas le point est dans le rectangle.

mais ca doit faire beaucoup de calcul ca.

 

j'ai trouvé ca aussi comme méthode de Maxence qui doit etre sur le forum de tps en tps.

http://maxence.delannoy.pagesperso-orange.fr/pt_poly.htm

 

avez vous une méthodes plus rapide et efficace ?

 

merci

Phil

 

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Bonjour

Comme le dit @(gile) les calculs ne sont pas bien compliqués, pour ne pas dire simplistes. Et qui plus est dans un rectangle !
Le cas du rectangle donc un côté est parallèle au SCU c'est une différence de coordonnées.
Dans l'autre cas, un petit calcul est nécessaire, mais pas impossible.

Peut-on voir ton code dans l'état actuel d'avancement ?

Tu vas finir par passer plus de temps en recherche sur le net qu'en essais par toi-même.

Amicalement
 

Posté(e)

hello

il n'y a pas de code encore, mais si vous en aviez un bout ou la méthode.

c'est surtout pour pas que j'écrive une usine a gaz quoi.

sinon je fais la méthode que j'ai décris plus haut.

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)
(defun isInside	(pt lowerLeft upperRight)
  (and (<= (car lowerLeft) (car pt) (car upperRight))
       (<= (cadr lowerLeft) (cadr pt) (cadr upperRight))
  )
)

Qu'on peut aussi écrire :

(defun isInside	(pt lowerLeft upperRight)
  (vl-every '<= lowerLeft pt upperRight)
)

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Hello Gile

mercii

je suppose que  pt, lowerleft, upperright  sont des coordonnées ( 0,0,0)   ( 2.0223,123.52,0)

c'est bien ce que je me disais, j'aurais ecris 20 lignes d'usine a gaz

Merci

Phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Bonjour @PHILPHIL

Ce n'est en rien déshonorant décrire des "usines à gaz" (surtout en ce moment avec les problèmes gaziers).
Il eût été bien plus préférable que tu écrives de ta propre main vingt ou trente lignes de code,
ça t'aurait aidé à comprendre et aidé à faire plus court ensuite.
Apprendre à marche puis apprendre à courir
Certes, en copier cinq est plus facile, mais bien moins formateur.
L'esprit initial qui était la ligne directrice de ce site, l'apprentissage, a bel et bien disparu,
l'ère du copier-coller devient la norme et je le regrette infiniment.

Amicalement

 

  • 2 mois après...
Posté(e)

Bonjour à la communauté.
Juste une remarque (c'est plus une question) qu'en est-il si le rectangle est "oblique", pas aligné avec l'axe des X et des Y ?

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Alors c'est quel coordonnées pour le lowerLeft et pour le upperRight ?
Car je n'ai pas de point en bas à droite ni en haut à gauche...

image.png.1c0714f960f13d879c819e37ae555804.png

 

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)
Il y a 3 heures, DenisHen a dit :

Alors c'est quel coordonnées pour le lowerLeft et pour le upperRight ?
Car je n'ai pas de point en bas à droite ni en haut à gauche...

Ce n'est plus le même problème que la question initiale.

Si tu veux qu'on t'aide à résoudre un problème différent, il faut que tu précises de quoi tu pars.
Par exemple, s'il s'agit d'entités AutoCAD (polyligne et point nodal), tu peux définit un SCU Objet sur la polyligne avant de récupérer les lowerLeft et upperRight

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Désolé, je n'ai pas de "problème" sur ce sujet, je posais juste une question.
Mais vu que dans le sujet initial, il n'était pas précisé l'orientation du rectangle, j'ai juste fais une petite observation.
Pour faire avancer le Schmilblick.
Effectivement, j'avais aussi pensé à un "SCU local".

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité