Domanda

Sto sviluppando in applicazione in XNA che attira percorsi casuali. Purtroppo, io sono in contatto con la grafica, quindi sono un po 'bloccato. La mia applicazione ha bisogno di fare quanto segue:

  1. Scegli un angolo casuale dalla mia origine (0,0), che è semplice.
  2. Disegna un cerchio in relazione a tale origine, 16px di distanza (o qualsiasi distanza I specificare), con l'angolo trova sopra.

(Scusa la mia orribile photoshoping)

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

Il secondo cerchio (16,16) rappresenterebbe un angolo di 45 gradi 16 pixel dalla mia origine.

Mi piacerebbe avere un metodo in cui passo nella mia distanza e l'angolo che restituisce un punto al grafico in. cioè.

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

So che questo è semplice, ma ancora qua, io sono abbastanza in contatto con la grafica. Qualsiasi aiuto?

Grazie, George

È stato utile?

Soluzione

Se l'angolo è in gradi, in primo luogo fare:

angle *= Math.PI / 180;

Quindi:

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

A proposito, il punto (16, 16) non è 16 pixel dal origine, ma sqrt (16 ^ 2 + 16 ^ 2) = sqrt (512) = 22.63 ~ pixel.

Altri suggerimenti

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

Si noti che le funzioni trigonometriche probabilmente prendono radianti. Se l'angolo è in gradi, dividere per 180 / Pi.

in generale:

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

Ove d rappresenta la distanza dall'origine e theta è l'angolo.

teorema di Pitagora . Poi questa discussione dovrebbe avere dettagli più specifici per voi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top