Deux segments sans intersection

Rousseau-Wallon shared this question 6 months ago
Needs Answer

Bonsoir,

Etant donnés deux polygones poly1 et poly2 je cherche deux segments tels que :

- chacun relie un sommet de poly1 à un sommet de poly2 ;

- les 4 extrémités sont différentes ;

- ils ne se croisent pas.

J'ai écris une séquence (liste L1) pour avoir toutes les possibilités d'intersection entre deux segments quelconques reliant les sommets mais je ne vois pas quoi en faire et je trouve que c'est bien lourd..

Une idée ?

Comments (3)

photo
1

Bonjour, je n'ai pas trop réfléchi : il doit y avoir bien plus simple mais il fait aussi trop beau dehors...!

J'ai repéré les sommets par leur ordre dans la liste des sommets :

- p1c : (x,y) x<y représentent les rangs x et y des "origines" des segments sur poly1 (j'ai utilisé la notation de point pour avoir une "liste" non écrasée)

- p2 : (x,y) x!=y représentent les rang x et y des "extrémités" des segments sur poly2

- test (m,n) représente une situation qui donne 2 segments non sécants :

ceux obtenus à l'aide de p1c(m) disons (x1,y1) et p2(n) disons (x2,y2) donnant les segments [x1,x2] et [y1,y2] (x1 et y1 : ordre dans les sommets de poly1 et x2, et y2 : ordre des sommets dans poly2)

- on retrouve ces couples de segments dans testok

photo
1

Oh ya yaille, impressionnant


Solution pour deux segments seulement,

avec la commande {sommet(poly1}} que je cherchais au mauvais endroit :

correction : ouille ouille non ma figure est fausse

photo
1

Bonne idée que de définir la variable donnant les les sommets.

Si tu te contentes de deux qui marchent :


liste = If(IsDefined(Intersect(Segment(S1(1), S2(1)), Segment(S1(2), S2(2)))), {Segment(S1(1), S2(2)), Segment(S1(2), S2(1))}, {Segment(S1(1), S2(1)), Segment(S1(2), S2(2))})
un=liste(1)
lautre=liste(2)

© 2019 International GeoGebra Institute