CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet résolu : Vérifier si un point de l'écran se situe dans un polygone ?

DébutPage précedente
1
Page suivantePage suivante
Tronche2cuir Tronche2cuir
MP
Niveau 28
16 juillet 2017 à 21:24:06

Bonsoir, je me demande si il existe un algorithme qui permet de vérifier si un point se situe dans un polygone, pour vérifier par exemple si l'utilisateur a cliqué dans ce polygone. C'est très facile à faire si c'est un rectangle dont les cotés sont parallèles aux bords de l'écran, mais si il s'agit d'une forme plus compliquée, je n'ai aucune idée de comment faire.
Je m'en remets donc à vos connaissances, merci d'avance :)

blachscholes56 blachscholes56
MP
Niveau 5
16 juillet 2017 à 22:22:45

Tu peux vérifier si le point se situe "à la gauche" de chacun des cotés de la forme à l'aide de produits vectoriels, par exemple. Si la forme est convexe (qu'elle ne comporte pas de creux), ça fonctionne.

Tronche2cuir Tronche2cuir
MP
Niveau 28
16 juillet 2017 à 23:04:52

je n'ai pas fait assez de maths pour savoir ce que sont les produits vectoriels, aurais tu un lien vers un exemple ?

Biolixe Biolixe
MP
Niveau 6
17 juillet 2017 à 00:59:36

Ça tombe bien j'ai fait l'algo y a 3 jours :)
Regarde la lambda "pointInPolygon" à la ligne 752 :)
https://github.com/Sygmei/ObEngine/blob/master/src/Collision/PolygonalCollider.cpp
Si t'as des questions hésite pas :)

LGV LGV
MP
Niveau 21
17 juillet 2017 à 14:36:42

Il faudrait preciser le domaine de validite de l'algo : polygones convexes uniquement, ou concaves egalement ? Etc.

Lapintade Lapintade
MP
Niveau 18
19 juillet 2017 à 10:50:28

Et tu n'as pas précisé si tu était en 3D ou en 2D.

Tronche2cuir Tronche2cuir
MP
Niveau 28
23 juillet 2017 à 02:33:45

Merci pour vos réponses,
mon problème concernait les polygones convexes et concaves en 2d uniquement.
Biolixe, je n'ai pas réussi à reproduire ta solution, mais j'ai fini par trouver ma propre méthode, voici mon script si ça vous intéresse, c'est du GDscript, le langage de Godot Engine (je précise que c'est juste pour tester, d'ou la définition de mon polygone écrite en dur comme variable membre) :
https://pastebin.com/iM0t0ZLj

Message édité le 23 juillet 2017 à 02:36:16 par Tronche2cuir
[collax] [collax]
MP
Niveau 10
24 juillet 2017 à 23:48:32

Algo simple :
Si tu trace une demi droite à partir de ton point et que tu compte le nombre d'intersection entre cette demi droite et ton polygone, si le nombre est impair il est dedans sinon il est en dehors.

Tu prend une demi droite vertical pour simplifier le test de collision et t'obtiens le résultat facilement :ok:

Tronche2cuir Tronche2cuir
MP
Niveau 28
25 juillet 2017 à 21:37:04

oui, c'est plus ou moins ce que j'ai fait :hap:
et j'ai aussi amélioré mon code et géré des exceptions que je n'avais pas prévues, depuis mon précédent post

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
La vidéo du moment