Frage

Ich entwickle in XNA in Anwendung, die zufälligen Pfaden zieht. Leider bin ich von Touch-out mit der grafischen Darstellung, so steckte ich ein bisschen bin. Meine Anwendung benötigt folgendes tun:

  1. Wählen Sie einen beliebigen Winkel von meinem Ursprung (0,0), die einfach ist.
  2. Zeichnen Sie einen Kreis in Bezug auf diesen Ursprung, 16px weg (oder eine Distanz, die ich angeben), um den Winkel oben gefunden.

(Entschuldigen Sie meine schreckliche photoshoping)

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

Der zweite Kreis an (16,16) würde einen Winkel von 45 Grad 16 Pixel weg von meiner Herkunft.

Ich möchte ein Verfahren haben, in dem ich in meinem Abstand und Winkel übergeben, die einen Punkt Graph gibt an. d.

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

Ich weiß, das ist einfach, aber agian, ich bin ziemlich aus der Berührung mit dem grafischen Darstellung. Jede Hilfe?

Danke, George

War es hilfreich?

Lösung

Wenn der Winkel in Grad, zuerst tun:

angle *= Math.PI / 180;

Dann:

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

übrigens, der Punkt, an (16, 16) nicht 16 Pixel entfernt vom Ursprung, aber sqrt (16 ^ 2 + 16 ^ 2) = sqrt (512) = ~ 22.63 Pixel.

Andere Tipps

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

Beachten Sie, dass die trigonometrischen Funktionen wahrscheinlich Radiant nehmen. Wenn Ihr Winkel in Grad, teilt mit 180 / Pi.

allgemein:

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

Wo d der Abstand vom Ursprung und Theta der Winkel.

Erfahren Sie die Pythagoras . Dann dieses Themas sollten mehr spezifische Details für Sie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top