android Dividing Circle in N gleiche Teile und kennen die Koordinaten jedes Teilungspunktes

Ich habe Anforderung, dass ein Kreis in N gleiche Teile auf der Grundlage der Zahl (2,3 … n. Aber ich möchte die Koordinaten der Teilung Punkte.

Ich habe einen Kreis, dessen centre(x,y) und radius(150) bekannt sind.

  • Wie man ein Video von einer URL anzeigt
  • Setzen Sie den Zustand von BottomSheetDialogFragment auf erweitert
  • Wie benutzt man die neue Android M-Funktion von "Text Selection", die von außerhalb Ihrer App angeboten wird?
  • Eingabe eines Rhythmus-Spiels
  • Wie behalte ich meine Cordova App Vollbildschirm beim Öffnen der Android-Tastatur?
  • DisplayListCanvas wird auf unbinded RenderNode gestartet (ohne mOwningView)
  • Frage:

    Gibt es eine Formel, die mir die Koordinaten der Teilungspunkte gibt, wie in der Abbildung gezeigt. Kann mir bitte jemand die Formel sagen. Ich möchte es in Java implementieren .

    Kreisbild für Refrence:

    Bild

  • Erstellen von Compound-Steuerelementen mit benutzerdefinierten XML-Attributen
  • ListView wird nach dem Filtern nicht aktualisiert
  • Android-Datenbindung ObservableList Verhalten Problem
  • Was ist der Unterschied zwischen @ id / und @ + id / in android?
  • Klick-Effekt auf die Schaltfläche in Android
  • Setzen Sie layout_anchor zur Laufzeit auf FloatingActionButton
  • 2 Solutions collect form web for “android Dividing Circle in N gleiche Teile und kennen die Koordinaten jedes Teilungspunktes”

    Sie müssen zwischen polaren und kartesischen Koordinaten umwandeln . Der Winkel, den Sie benötigen, ist der Winkel zwischen der (imaginären) vertikalen Linie, die den Kreis in der Hälfte aufspaltet und die Linie, die das Zentrum mit der Kreisgrenze verbindet. Mit dieser Formel können Sie die X- und Y-Offsets aus der Mitte berechnen.

    In deinem Beispielbild ist der erste Winkel 0 und der zweite ist 360 / n. Jeder nächste ist i*(360/n) wo ich der Index der aktuellen Zeile bin, die du zeichnen musst. Wenn Sie dies angeben, erhalten Sie die X- und Y-Offsets im Uhrzeigersinn (und Sie können sie einfach zu den X- und Y-Koordinaten des Zentrums hinzufügen, um die Koordinaten jedes Punktes zu finden)

    EDIT: irgendeine Art Pseudocode:

     //x0, y0 - center's coordinates for(i = 1 to n) { angle = i * (360/n); point.x = x0 + r * cos(angle); point.y = y0 + r * sin(angle); } 

    Ich habe schon akzeptiert … die Formel funktioniert perfekt. Hier ist die in Java kodierte Lösung. Es wird anderen Entwicklern helfen.

      private int x[]; // Class variable private int y[]; // Class variable private void getPoints(int x0,int y0,int r,int noOfDividingPoints) { double angle = 0; x = new int[noOfDividingPoints]; y = new int[noOfDividingPoints]; for(int i = 0 ; i < noOfDividingPoints ;i++) { angle = i * (360/noOfDividingPoints); x[i] = (int) (x0 + r * Math.cos(Math.toRadians(angle))); y[i] = (int) (y0 + r * Math.sin(Math.toRadians(angle))); } for(int i = 0 ; i < noOfDividingPoints ;i++) { Log.v("x",""+i+": "+x[i]); Log.v("y",""+i+": "+y[i]); } } 

    Wobei x0 und y0 Koordinaten des Kreises sind.und r ist Radius.

    In meinem Fall:

    Eingabe x0 = 0, y0 = 0 und r = 150, noOfDividingPoints = 5

    Ausgabe

    Punkt 1: (150,0)

    Punkt 2: (46,142)

    Punkt 3: (-121,88)

    Punkt 4: (-121, -88)

    Punkt 5: (46, -142)

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.