Bonsoir,
Je partirais sur le raisonnement suivant.
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é.
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".
Bon courage,
--Raf
Le 20/06/2025 à 19:36, Patrice Karatchentzeff a écrit :
> Salut Fred,
>
> C'était un problème de programmation de jeu :).
>
> Ton écran est une matrice (de points ou de cases : ça ne change rien).
> Ton quadrilatère est une sous-matrice de ton écran.
>
> 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.
>
> Donc quatre tests d'inégalité... rien de terrible, même en assembleur.
>
> Faut juste que tu maîtrises ton écran et son indexation...
>
>
> Le ven. 20 juin 2025 à 17:05, Frédéric <fma38@???> a écrit :
>>
>> Hello,
>>
>> Je cherche à faire une détection de point dans un quadrilatère. Ce ne
>> serait pas sorcier si ce n'était pas à faire en assembleur Z80, sur une
>> bécane qui tourne à 4MHz :o/
>>
>> Ce test doit se faire assez rapidement, pendant le déplacement d'un
>> pointeur à l'écran, pour tester s'il entre ou sort de zones pré-définies.
>>
>> Avez-vous connaissant d'algos sioux pour faire ça ?
>>
>> Merci de vos lumières.
>>
>> --
>> Frédéric
>>
>
>