Effectivement, je suis parti du rectangle...
Une autre solution est mettre tous les points de ton quadrilatère dans
une liste et de tester si ton point appartient à la liste (test en n,
pas terrible)
Une variante plus simple est de reprendre mon idée de départ, mais de tester
Xa < x < Xb && yB < y < yA avec le quadrilatère ABCD dans le sens
horaire... si Xa < Xb
Tu fais de même pour C et D si Xc < Xd
Et tu refais dans le cas contraire (Xa > Xb).
Ça fait quelques tests pour « voir » comment se situent les abscisses
(puis les ordonnées) de ton quadrilatère, puis tu n'as plus qu'à
tester les bonnes inégalités.
À mon avis, c'est le test le rapide et le plus générique. On doit
pouvoir réduire le nombre de tests en posant des conditions fortes
(convexité par exemple... ça réduit les possibilités des points C et D
quand tu as testé les points A et B)
PK
Le ven. 20 juin 2025 à 20:37, Frédéric <fma38@???> a écrit :
>
> Le vendredi 20 juin 2025, Patrice a écrit :
>
> > Pour tester si ton « point » appartient au quadrilatère, il suffit de
> > tester si les « coordonnées » de ton point sont entre les quatre
> > points des coins du quadrilatère.
>
> Oui, tout à fait.
>
> > Donc quatre tests d'inégalité... rien de terrible, même en assembleur.
>
> Non, pas tout à fait.
>
> Ça, c'est le cas du rectangle, ce que j'ai déjà codé. Mais je veux faire le
> test pour un quadrilatère quelconque (enfin, convexe uniquement, quand
> même, pour simplifier un poil).
>
> Une approche à laquelle j'ai pensée serait de décomposer le quadrilatère
> en plusieurs rectangle, avec éventuellement une approximation. Mais il
> faudrait trouver la décomposition qui utilise le moins de rectangles
> possibles...
>
> --
> Frédéric
>
--
|\ _,,,---,,_ Patrice KARATCHENTZEFF
ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff@gmail.com
|,4- ) )-,_. ,\ ( `'-'
'---''(_/--' `-'\_)