2010-08-05 26 views
1

Si mon X coordonne l'incrément à chaque fois qu'une image est dessinée, quelle formule puis-je utiliser à partir de la bibliothèque mathématique pour que la coordonnée Y se déplace sur la circonférence de un cercle image par image, créant l'illusion d'un objet en orbite autour d'un point central en mouvement continu? Je l'ai vu peut impliquer sin ou cos, mais je ne suis pas sûr de savoir comment ajuster les variables en conséquence par image.Calcul dynamique des points d'un cercle dans un jeu Android

Un grand merci pour votre aide

Répondre

1

Vous ne pouvez pas faire un cercle complet si votre coordonnée X incréments chaque fois, parce que la moitié du temps votre coordonnée X doit être décrémentation.

Ce que vous voulez, ce sont les coordonnées polaires: thêta pour l'angle et r pour le rayon. Votre r restera constant, et votre thêta augmentera continuellement. Ensuite, vos x et y sont:

x = r * cos(theta) 
y = r * sin(theta) 
+0

Un grand merci d'avoir pris le temps de répondre à ma question. L'application des mathématiques dans un environnement de jeu rend le sujet beaucoup plus intéressant, ils devraient l'utiliser pour enseigner aux enfants! – ComethTheNerd

+0

Travailler magnifiquement maintenant grâce à cette formule. – ComethTheNerd

0

nous ox,oy l'origine de votre cercle, et px,py un point sur le bord du cercle, avec un rayon de r

donné: (px-ox)^2 + (py-oy)^2 = r^2 définition du cercle

Résous py:

(py-oy)^2 = r^2 - (px-ox)^2

(py-oy) = sqrt(r^2 - (px-ox)^2)

py = sqrt(r^2 - (px-ox)^2) + oy < ---

Comme vous incrémenter px avec vos images, vous pouvez trouver le py approprié en recalculant la formule ci-dessus.

+0

Merci beaucoup. Je pense que pour garder le jeu aussi lisse que possible, je vais calculer les points pour chaque image et les stocker dans un tableau qui peut être lu à un index qui est incrémenté à chaque boucle. Pour effectuer ce calcul de façon dynamique, je vais recalculer ces valeurs si la méthode surfaceChanged est appelée. Merci beaucoup pour votre aide – ComethTheNerd