Fonction pour vérifier si un point x;y est dans un tracé
Bonjour,
Je ne suis pas un développeur professionnel. En fait je fais des études de médecine, mais j'ai toujours aimé le développement de programmes. Je fais surtout du web, en html/php/mysql/js etc... et du flash.
Dans le cadre de mes études, je réalise pour mon mémoire de master une petite applic qui permet de faire défiler des images d'IRM et de détailler certaines zones de ces images. Les IRMs (pour ceux qui ne connaissent pas) sont des coupes du corps (comme un scanner). Ils affichent donc des zones de différentes couleurs. Par exemple, les poumons sont gris, la graisse blanche, les vaisseaux sanguins encore plus blanc etc...
Je voudrais que mon applic permette de dessiner des zones sur ces images et d'écrire une description de la zone. Les zones sont bien entendu aussi variées que nombreuses et donc, je passe par la réalisation d'un petit éditeur qui me permet de "déssiner" les zones au clic en posant des points qui seront reliés par des droites... L'éditeur est accessible aux administrateurs! Chaque zone est donc en fait un polygone, dont le périmètre est déterminé par un tracé (selon mes termes).
L'applic est destinée en html/php/javascript avec un brin de connexion asynchrone et peut être l'utilisation de socket php... (pour le contexte). 8-)
Je suis en phase de conception et dans la modélisation de mes classes, je me trouve face à un problème plutôt d'ordre mathématique (snif) et sachant que les maths sont indispensables à de bons programmeurs, je me tente ici! J'ai déjà posé la question sur quelques forums de développement web et sur des forums de mathématiques. Les développeurs qui m'ont répondu ont donné leur langue au chat et les matheux m'ont donné des réponses théorique très obscures pour moi! :?
Peut-être que vos lumière seront plus utiles! :D
Le problème:
J'ai une série de coordonnée x;y que je stock dans une table et indexées à une entité que j'appelle "tracés". Les coordonnées sont de type A(x_a;y_a), B(x_b;y_b), C(x_c;y_c) et se succèdent de sorte à représenter les sommets d'un polygone. Ce polygone est mon tracé. Il peut contenir autant de sommets que désiré de sorte à produire des zones aussi grandes/complexes que voulu.
Je n'ai pas de problème pour dessiner les zones. En fait, je stock les coordonnées de chaque sommet dans ma table, en récupérant les évènement onmousedown en javascript, puis en les envoyant à un script php qui discute avec une base mysql.
Lors de l'exécution du programme avec les privilèges d'utilisateur simple, l'utilisateur peut cliquer quelque part sur la page, ce qui produit une nouvelle coordonnée x;y que j'appelerai CLIC(x_clic;y_clic). Je veut pouvoir vérifier si cette nouvelle coordonnée se trouve à l'intérieur ou à l'extérieur d'un tracé donné, que je récupère de ma table.
Il faut savoir que les droites qui composent mon tracé ne peuvent pas se croiser (comme ça je ne m'embête pas à savoir quoi faire si une partie d'un tracé recouvre une autre partie de ce même tracé).
voilà! Problème qui me harcèle depuis quelques jours (je précise) et plusieurs tentatives déjà, mais aucune satisfaisante!
Je ne sais pas si ce petit jeu peut peutêtre amuser vos neurones, et soulager les miens!
Merci en tout cas d'avoir lu et encore plus pour les réponses!
A+ fred
Ton problème peut être traité par plusieurs méthodes
Ton problème peut être traité par plusieurs méthodes. Il s'agit d'un problème de classification; c'est à dire séparer l'ensemble en zone et être en mesure de dire si un élément appartient à une telle ou telle zone. Il existe déjà des programmes de classification sur le net utilsant les réseaux neuronaux où encore une méthode dite de la logique floue. Fais un petit tour sur le net en tapant "méthodes de classification" et tu auras ton bonheur. Peut être que tu trouveras des pogrammes tout faits ou du moins une méthode à programmer. A titre d'information, ils existent des méthodes toutes simples et donc largement accessibles à quelqu'un qui développe déjà.
Il ne s'agit pas de monter un programme
Il ne s'agit pas de monter un programme de classification mais plutôt utiliser le principe de base; c'est à dire disposez de zones ( avec des frontières) et être en mesure de dire que tel ou tel élément appartient à telle ou telle zone.
Visiblement il s'agit de pusieurs polygones
Visiblement il s'agit de pusieurs polygones et le problème qui me parait le plus difficile est celui de les distinguer les uns des autres. Que se passe t il en cas de plusieurs etoiles par exemple. Personnelement, je pense qu'il faut creuser vers les méthodes utilisés dans les problèmes de classification qui reposent sur le thème de l'identification. C'est loin d'être limpide.