Android Dividir el círculo en N partes iguales y conocer las coordenadas de cada punto de división

Tengo el requisito de que un círculo debe ser dividido en N partes iguales basadas en el número (2,3 … n. Pero quiero las coordenadas de los puntos de división.

Tengo un círculo cuyo centre(x,y) y el radius(150) son conocidos.

Pregunta:

¿Hay alguna fórmula que me dé las coordenadas de los puntos de división como se muestra en la figura. ¿Puede alguien por favor decirme la fórmula. Quiero implementarlo en Java .

Imagen de círculo para refrence:

imagen

Es necesario convertir entre coordenadas polares y cartesianas . El ángulo que usted necesita es el ángulo entre la línea vertical (imaginaria) que divide el círculo en la mitad y la línea que conecta el centro con el límite del círculo. Con esta fórmula se pueden calcular los desplazamientos X e Y desde el centro.

En su imagen de ejemplo el primer ángulo es 0 y el segundo es 360 / n. Cada siguiente es i*(360/n) donde i es el índice de la línea actual que necesita dibujar. Aplicar esto le dará los desplazamientos X e Y en el orden de las agujas del reloj (y sólo puede agregarlos a las coordenadas X e Y del centro para encontrar las coordenadas de cada punto)

EDIT: algún tipo de pseudo-código:

 //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); } 

Ya he aceptado la respuesta … la fórmula funciona perfectamente. Aquí está la solución codificada en Java. Ayudará a otros desarrolladores.

  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]); } } 

Donde x0 y y0 son coordenadas del centro del círculo y r es radio.

En mi caso:

Entrada x0 = 0, y0 = 0 y r = 150, noOfDividingPoints = 5

salida

Punto1: (150,0)

Punto2: (46,142)

Punto 3: (-121,88)

Punto 4: (-121, -88)

Punto 5: (46, -142)

  • Android - Ajuste de la posición de la vista de imagen en la parte superior de una vista de imagen con zoom
  • ¿Cómo determino qué triángulo tocó el usuario en este rectángulo?
  • Determinación de números pares / impares (enteros)?
  • Mover la mano Minuto en el reloj de Android
  • ¿Puede explicar (cálculos matemáticos) ejemplo de gesto (Levenshtein)?
  • ¿Cómo mostrar fórmulas matemáticas en mi aplicación Android?
  • ¿Cómo obtengo el ángulo del teléfono en relación con el campo magnético de la Tierra?
  • Cálculo de intersecciones entre segmentos de línea
  • ¿Multiplicar dobles en java?
  • Android Fourier Transform Realtime - Renderscript
  • Parallax XY y cálculo de la rotación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.