著者: Raphaël Dorado 日付: To: guilde 題目: Re: Détecter un point dans un quadrilatère
Le 20/06/2025 à 21:02, Frédéric a écrit : > Le vendredi 20 juin 2025, Raphaël a écrit :
>
>> Chaque segent du bord de ton quadrilatère d'indice i peut être modèlisé comme
>> une équation :
>>
>> A[i]*x +B[i] * y + C[i] =0
>>
>> Quand tu évalues l'équation sur un point (x,y), le signe de la partie gauche
>> de l'équation indique de quel "coté" de la droite tu te trouves.
>>
>> Donc, il faut que les 4 évaluations des équation du quadrilatère aient le même
>> signe avec la même paire (x,y), le point considéré.
>
> Ok, vu. Il faut que j'oriente correctement mes segments, du coup...
>
Oui, c'est le détail omis qui prouve que tu as tout compris :-)
Il te faut de toutes façons une orientation quand un des points du
quadrilatère est à l'intérieur du triangle composé par les 3 autres.
Sinon impossible de définir le coté concave. Dans ce cas (concave),
alors il faut que le point candidat soit dans chacun des triangles de ce point
interne vers chaque paire d'autres points qui (la paire) est effectivement un
des bords du quadrilatère et non pas le coté qui à disparu pour la
concativité. J'espère être assez clair.
>> Il va falloir implémenter/récupérer la multiplication 8x8 => 16 bits, en
>> supposant que ton écran a une résolution inférieure à 256x256. Algo de
>> multiplication "du paysan Russe".
>
> La résolution réelle totale de l'écran est de 320x200, mais mes images ne
> font que 288x200. Comme je voulais stocker les coordonnées des zones
> (rectangulaire, pour le moment) sur 8 bits, j'ai divisé par 2 la
> coordonnée X des zones.
>
> Du coup, je peux faire ce que tu préconises. Des routines de
> multiplication en Z80, c'est pas ce qui manque ;o)
>
Le plaisir pour est pour moi d'être utile.
Pour l’anecdote, J'ai ce problème en TP d'info en seconde sur une machine
Z80 sous CP/M. Donc ton message m'a vraiment accroché.
> Merci !
>
> PS : j'ai omis de préciser qu'une partie du code Z80 est généré par des
> macros écrites en Lua. En particulier pour définir ces zones. J'ai donc la
> possibilité de faire du pré-traitement assez complexe, et de manière assez
> rapide, puisque c'est exécuté sur le PC qui cross-assemble.
>
Super, bonne approche, pas la peine faire les Don Quichotte ;-)