== == Le Crux
Comment définir avec élégance cinq régions cliquables surface égale en termes de (x, y) les coordonnées d'un pentagone ?Définition de régions cliquables par (x, y) coords javascript toile Phaser
== == Le contexte
J'ai un sprite cliquable pour un jeu javascript en utilisant Phaser. Le sprite a la forme d'un pentagone et chacun des sommets définit un territoire qui est le cinquième de la surface du pentagone. Lorsque l'utilisateur clique sur le territoire, le gestionnaire d'événements appelle la fonction appropriée pour ce territoire et renvoie la position (x, y) cliquée dans le territoire.
Je suis un programmeur javascript novice qui aimerait apprendre comment (et pourquoi) écrire elegant code, si possible. Je peux faire un peu de maths. Normalement, les régions cliquables sont définies comme des rectangles, mais il s'agit d'un cas particulier. La symétrie quintuple du graphique fait partie intégrante du thème du jeu (Five Elements Gong Fu).
Quel est un bon moyen de définir ces régions cliquables en termes de coordonnées? Je me sens comme s'il y avait un peu de génie informatique (on pourrait penser que cela dépendrait de la symétrie pour définir les coordonnées d'une manière élégante, mais je n'ai pas pu en déterminer un.)
de plus, le graphique est centré dans un fichier .png qui est rectangulaire. Je dois traduire en quelque sorte les coordonnées des quartiers du pentagone aux coordonnées de la toile afin que l'utilisateur peut se sentir qu'ils sont en cliquant la région appropriée.
modifier
== Crappy Graphique ==
Idéalement, le pentagone serait dessiné symétriquement, mais je l'ai simplement malmené. Comme ceci:
Comment définir le (x, y) les coordonnées du quartier A afin que l'utilisateur peut cliquer sur la région A et il appelle Function_for_region_A (gestionnaire)?
Pouvez-vous aider un peu en fournissant un graphique/image? – KostasX
Voici une démo que j'ai configurée et qui pourrait vous aider: [JSFiddle Demo] (https://jsfiddle.net/learnjavascript/h9fhvm4v/). L'idée est d'utiliser le [système de coordonnées barycentriques] (http://2000clicks.com/mathhelp/GeometryPointAndTriangle3.aspx) pour trouver si un point est à l'intérieur d'un triangle. Ma démo utilise l'API Canvas pour dessiner toutes les formes et intégrer une image au-dessus de la forme du pentagone. Je pense que c'est un bon début pour ce que vous essayez d'accomplir. – KostasX
@KostasX Non seulement vous avez découvert une méthode élégante (diviser le pentagone en cinq triangles est évident une fois que vous le voyez), mais vous avez essentiellement codé toutes les parties pertinentes de jsfiddle. Je vous engagerais si j'avais une société de logiciels. Je vous remercie. – cinead