2010-03-26 4 views
2

Je développe en application dans XNA qui dessine des chemins aléatoires. Malheureusement, je suis déconnecté des graphiques, donc je suis un peu coincé. Mon application doit faire ce qui suit:Recherche de coordonnées par angle

  1. Choisissez un angle aléatoire à partir de mon origine (0,0), ce qui est simple. Dessinez un cercle par rapport à cette origine, à une distance de 16px (ou toute autre distance que je spécifie), à ​​l'angle trouvé ci-dessus.

(Excusez mon photoshoping terrible)

alt text http://www.refuctored.com/coor.png

Le deuxième cercle au (16,16) représenterait un angle de 45 degrés à une distance de 16 pixels de mon origine.

Je voudrais avoir une méthode dans laquelle je passe dans ma distance et l'angle qui renvoie un point à graver à. Je sais que c'est simple, mais agian, je suis assez déconnecté du graphisme. De l'aide?

Merci, George

Répondre

5

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

angle *= Math.PI/180; 

Puis:

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

Par ailleurs, le point (16, 16) n'est pas à 16 pixels de l'origine, mais sqrt (16^2 + 16^2) = sqrt (512) = ~ 22,63 pixels.

0

en général:

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

où d est la distance de l'origine et thêta est l'angle.

1
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 prennent probablement des radians. Si votre angle est en degrés, divisez par 180/Pi.

Questions connexes