2010-05-06 8 views
1

J'utilise Matlab pour créer un petit jeu d'échecs pour l'un de mes cours ce semestre. Ce qui me dérange, c'est que l'utilisateur puisse sélectionner l'une des pièces d'échecs. Pour simplifier les choses, je fais en sorte que l'utilisateur sélectionne une pièce en cliquant sur le carré sur lequel réside la pièce d'échecs plutôt que de cliquer sur la pièce elle-même (ce que je suppose serait beaucoup plus difficile). Je sais comment obtenir les coordonnées x et y du view-port, mais comment transformer ces coordonnées en coordonnées à trois espaces? Je sais qu'il y a plusieurs coordonnées x, y, z associées à chaque coordonnée vue-port, mais je ne m'intéresse qu'aux coordonnées x, y, z où z = 0 (puisque la carte elle-même est dans le x, y plan qui coupe l'axe z où z = 0).MATLAB: Comment obtenir des coordonnées 3D à partir d'un clic de l'utilisateur?

Merci!

Répondre

0

Non spécifique à MATLAB, mais cela peut aider: Compte tenu des paramètres de la caméra et de l'emplacement du clic, vous pourriez projeter un rayon dans la scène et tester les intersections, mais il serait probablement beaucoup plus facile de considérer l'inverse Problème: Mappez les carrés de votre grille d'échecs sur les coordonnées de l'écran, puis comparez simplement en 2D avec l'emplacement du clic. Notez que est déjà en cours lors du rendu de la scène.

2

Vous pouvez jeter un oeil à select3d de l'échange de fichiers. Il vous permet de sélectionner des objets de patch en 3D (ce qui est probablement la façon dont vous voulez créer votre carte, de toute façon).

Questions connexes