Question

Je suis en train d'élaborer en application XNA qui attire des chemins aléatoires.Malheureusement, je suis hors de contact avec la représentation graphique, donc je suis un peu coincé.Mon application doit effectuer les opérations suivantes:

  1. Choisir aléatoirement l'angle de mon origine (0,0), qui est simple.
  2. Dessiner un cercle par rapport à cette origine, 16px loin (ou n'importe quelle distance, je précise), à l'angle se trouve au-dessus.

(Excusez mon horrible photoshoping)

le texte d'alt http://www.refuctored.com/coor.png

Le deuxième cercle (16,16) représentent un angle de 45 degrés à 16 pixels loin de mon origine.

Je voudrais avoir une méthode dans laquelle je passe ma distance et l'angle qui renvoie un point de graphique.c'est à dire

private Point GetCoordinate(float angle, int distance)
{
   // Do something.
   return new Point(x,y);
}

Je sais que c'est simple, mais d'une, je suis assez hors de contact avec la représentation graphique.Toute aide?

Merci, George

Était-ce utile?

La solution

Si l'angle est en degrés, faites d'abord:

angle *= Math.PI / 180;

Alors:

return new Point(distance * Math.Cos(angle), distance * Math.Sin(angle));

Par la manière, le point de coordonnées (16, 16) n'est pas de 16 pixels à partir de l'origine, mais sqrt(16^2 + 16^2) = sqrt(512) =~ 22.63 pixels.

Autres conseils

private Point GetCoordinate(float angle, int distance)
{
  float x = cos(angle) * distance;
  float y = sin(angle) * distance;
  return new Point(x, y);
}

Notez que les fonctions trigonométriques probablement prendre radians.Si votre angle est en degrés, diviser par 180/Pi.

en général:

x = d * cos(theta)
y = d * sin(theta)

Où d est la distance entre l'origine et theta est l'angle.

Apprendre l' Le Théorème De Pythagore.Alors ce fil doit avoir des détails plus spécifiques pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top