Coordonnées de points extérieurs

maxdhavys

XLDnaute Nouveau
Bonjour à tous et bonne année,

J'ai une quantité finie de rectangles (R1, R2, etc.) accolés dont je connais les coordonnées de chaque point.

Le point inférieur gauche du rectangle R1 a toujours pour coordonnées (0;0).

Ces rectangles forment un polygone à angles droits.

Ayant toutes ces infos et connaissant le point (0;0), je cherche à déterminer chacun des points extérieurs constituants ce polygone.

J'ai fait un xls qui permettra probablement de mieux comprendre ^^

Est-ce que quelqu'un pourrait m'aider à trouver une formule svp :?
 

Pièces jointes

  • Test_points_exterieurs.xlsx
    48.7 KB · Affichages: 27
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Bonjour à tous et bonne année,

J'ai une quantité finie de rectangles (R1, R2, etc.) accolés dont je connais les coordonnées de chaque point.

Le point inférieur gauche du rectangle R1 a toujours pour coordonnées (0;0).

Ces rectangles forment un polygone à angles droits.

Ayant toutes ces infos et connaissant le point (0;0), je cherche à déterminer chacun des points extérieurs constituants ce polygone.

J'ai fait un xls qui permettra probablement de mieux comprendre ^^

Est-ce que quelqu'un pourrait m'aider à trouver une formule svp :?

A condition de nommer explicitement chaque cellule dont le coin inférieur gauche contient la coordonnée souhaitée un simple calcul de colonne et de ligne permet la solution
upload_2018-1-9_20-26-56.png
 

Pièces jointes

  • Test_points_exterieurs.xlsx
    21.6 KB · Affichages: 21

Modeste geedee

XLDnaute Barbatruc
Merci Modeste geedee. Cependant je ne cherche pas à déterminer les points à partir de la figure mais à partir des simples coordonnées dans le 1er tableau... la figure ne sert qu'à illustrer pour mieux comprendre.
????
S'il n'y a pas de logique dans la distribution de chaque figure Rx par rapport à Rz, autant faire appel à Mir et Miroska pour les coordonnées des angles de la figure résultante...
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
La logique de distribution de chaque Rx peut être déterminée puisqu'il y a des coordonnées communes pour chacun d'eux.
çà c'est d'abord un constat plutôt qu'une logique...

la logique serait :
à partir du tableau des coordonnées de chaque coin de chaque rectangle
éliminer les coordonnées qui apparaissent de façon paire
reste alors les angles uniques(convexe ou concave)

Quid de la logique de nommage ???
sens horaire ?, ordre des abscisses, croissant, décroissant
ordre du tableau (ligne,colonnes) ?
 

CISCO

XLDnaute Barbatruc
Bonjour

@ Modeste geedee : C'est à nous de trouver la logique qui permettrait de réponde à la demande de maxdhavys. Pas évident, mais c'est ça, le jeu. J'ai une toute petite idée, mais il y a encore au moins trois problèmes :
* Ce n'est qu'une toute petite idée (Cf. en pièce jointe) : Comparer les tableaux C7:I14 et C34:R50.
* Définir ce que signifie ici le verbe "comparer".
* Il va falloir que je me remette au VBA, et ça, ce n'est pas évident (même si cela m'intéresse).

@ plus
 

Pièces jointes

  • Test_points_exterieurs.xlsx
    28.1 KB · Affichages: 27

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour maxdhavys, Modeste geedee, Staple1600, CISCO,

J'ai un peu bricolé de mon côté.
J'ai refait la numérotation des rectangles à partie de la cellule C28 qui a pour coordonnées (0,0). On part du point le plus à droite et le plus bas du rectangle et on circule dans le sens anti-horaire pour les trois autres points.
J'arrive à trouver les cellules de la bordure :). Il me manque les critères pour isoler les "coins" de la bordure :(. Mais là, je fais une pause parce je commence à pédaler dans la semoule :confused:
 

Pièces jointes

  • maxdhavys- points exterieurs- v1.xlsm
    24.2 KB · Affichages: 27
Dernière édition:

maxdhavys

XLDnaute Nouveau
Voici un premier jet de l'algo que je vais tester, corriger et optimiser

On part du couple (x0;y0) = (0;0) car c’est le point extérieur de référence dont on peut être sûr qu’il est seul et unique

S’il existe un couple (xi;yi) = (x0;y0) appartenant à 2 des 3 colonnes différentes de celle du couple (x0;y0)

Alors

Si (x0;y0) appartient à la colonne bg et (xi;yi) appartiennent aux colonnes hd ou bd (alors on compare (x0;y0) aux (xi;yi) du rectangle de la colonne bd)
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne bg ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne bd et (xi;yi) appartiennent aux colonnes hd ou hg (alors on compare (x0;y0) aux (xi;yi) du rectangle de la colonne sg)
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne sd ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sg et (xi;yi) appartiennent aux colonnes bd ou bg (alors on compare (x0;y0) aux (xi;yi) du rectangle de la colonne bg)
alors on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne sg ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sd et (xi;yi) appartiennent aux colonnes bg ou sg (alors on compare (x0;y0) aux (xi;yi) du rectangle de la colonne bg)
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne sg ;
on réitère la boucle jusqu’à arriver au point (0;0).

S’il existe un couple (xi;yi) = (x0;y0) appartenant à une des 3 colonnes différentes de celle du couple (x0;y0)

Alors

(Cas des bg)

Si (x0;y0) appartient à la colonne bg et (xi;yi) appartient à la colonne bd
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne bg ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne bg et (xi;yi) appartient à la colonne sd
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne bd ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne bg et (xi;yi) appartient à la colonne sg
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne bg ;
on réitère la boucle jusqu’à arriver au point (0;0).

(Cas des bd)

Si (x0;y0) appartient à la colonne bd et (xi;yi) appartient à la colonne bg
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne bd ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne bd et (xi;yi) appartient à la colonne sd
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne bd ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne bd et (xi;yi) appartient à la colonne sg
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne sd ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

(Cas des sg)

Si (x0;y0) appartient à la colonne sg et (xi;yi) appartient à la colonne bg
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne sg ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sg et (xi;yi) appartient à la colonne sd
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne sg ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sg et (xi;yi) appartient à la colonne sg
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne bg ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

(Cas des sd)

Si (x0;y0) appartient à la colonne sd et (xi;yi) appartient à la colonne bg
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne sg ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sd et (xi;yi) appartient à la colonne bd
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne sd ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sd et (xi;yi) appartient à la colonne sg
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne sd ;
on réitère la boucle jusqu’à arriver au point (0;0).

S’il n’existe pas un couple (xi;yi) = (x0;y0) appartenant à une des 3 colonnes différentes de celle du couple (x0;y0)

Alors

S’il existe un ou plusieurs xi = x0

Alors

Si (x0;y0) appartient à la colonne bg et xi appartien(nen)t à la colonne bd
alors
on prend comme nouveau (x0;y0) le point (xi;max(yi<y0)) du rectangle Ri de la colonne bd ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne bd et xi appartien(nen)t à la colonne bg
alors
on prend comme nouveau (x0;y0) le point (xi;max(yi<y0)) du rectangle Ri de la colonne bg ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sg et xi appartien(nen)t à la colonne bd
alors
on prend comme nouveau (x0;y0) le point (xi;max(yi<y0)) du rectangle Ri de la colonne bd ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sd et xi appartien(nen)t à la colonne sg
alors
on prend comme nouveau (x0;y0) le point (xi;min(yi>y0)) du rectangle Ri de la colonne sg ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

S’il existe un ou plusieurs yi = y0

Alors

Si (x0;y0) appartient à la colonne bg et yi appartien(nen)t à la colonne sd
alors
on prend comme nouveau (x0;y0) le point (min(xi>x0);yi) du rectangle Ri de la colonne sd ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne bd et yi appartien(nen)t à la colonne sd
alors
on prend comme nouveau (x0;y0) le point (min(xi>x0);yi) du rectangle Ri de la colonne sd ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sg et yi appartien(nen)t à la colonne bg
alors
on prend comme nouveau (x0;y0) le point (xi;max(yi<y0)) du rectangle Ri de la colonne bg ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sd et yi appartien(nen)t à la colonne sg
alors
on prend comme nouveau (x0;y0) le point (xi;min(yi>y0)) du rectangle Ri de la colonne sg ;
on réitère la boucle jusqu’à arriver au point (0;0).

S’il n’existe pas de yi = y0 et de xi = x0

Alors

Si (x0;y0) appartient à la colonne bg
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle Ri de la colonne sg ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne bd
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle R0 de la colonne bg ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sg
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle R0 de la colonne sd ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).

Si (x0;y0) appartient à la colonne sd
alors
on prend comme nouveau (x0;y0) le point (xi;yi) du rectangle R0 de la colonne bd ;
on enregistre l’ancien (x0;y0) comme point extérieur ;
on réitère la boucle jusqu’à arriver au point (0;0).
 

Pièces jointes

  • Test_points_exterieurs1.xlsx
    49.5 KB · Affichages: 29

CISCO

XLDnaute Barbatruc
Bonjour

Est-ce que dans ton vrai fichier tu travailles avec des coordonnées faites de nombres entiers, comme sur ton fichier exemple, ou est-ce que tu peux avoir des nombres relatifs, exemple (0,125;5,159) ?

@ plus
 
Dernière édition:

Discussions similaires