Trouver les coordonnées d'angle
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:
- Choisir aléatoirement l'angle de mon origine (0,0), qui est simple.
- 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
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.