2011-04-26 17 views
5

Todo parecía tan sencillo hasta que tuve que programarlo realmente.Encontrar punto en Circle en Android

Lo que tengo

he subido una imagen para explicarlo mejor.

  • que tienen un círculo y sé

    • es el radio
    • coordenadas del centro de
    • coordenadas iniciales de cada botón (los círculos rojos).

Quiero ser capaz, cuando girar la imagen círculo gris, con 10 grados, para el cálculo de los botones rojos nuevas coordenadas (X1Y1, x2y2).

Esto no debería ser difícil de lograr para alguien que sabe matemáticas, pero no pude encontrar una solución adecuada. También busqué por aquí y no pude encontrar una solución funcional. Cualquier ayuda es muy apreciada. Gracias

enter image description here

La solución de trabajo, como Felice que a continuación es:

-primero cuidar de ángulo de giro, en cada REDIBUJA simplemente se incrementará

angle = angle+mainRotationAngle; 

    float x = (float) (center.X + Math.cos(angle*Math.PI/180F) * radius 
    float y = (float) (center.Y + Math.sin(angle*Math.PI/180F) * radius 

    button.setX(x); 
    button.setY(y); 

Respuesta

5

Es más facil si mantiene el botón inicial ángulos, modifique el ángulo para producir la rotación. por lo que en pseudocódigo:

newAngle = Angle+rot; 
xbutton = center.x+cos(newAngle)*radius; 
ybutton = center.y+sin(newAngle)*radius; 

Si realmente tiene las coordenadas de los botones, puede convertirlos en el ángulo mediante el uso de la función atan2, en pseudocódigo:

buttonAngle = atan2(button.y-center.y,button.x-center.x); 
+0

Usted ha hecho mi día Felice. Muchas gracias por su ayuda. He publicado el código de Android en funcionamiento en la publicación de la pregunta. – Alin

+0

@Alin de nada :) –

+0

En realidad, después de probar esto un poco más, los botones se vuelven locos. Mientras deslizo el círculo, después de un rato los botones ya no están en la misma línea. Depuración para ver de qué se trata. ¿Alguna idea mientras tanto? En caso de que gire el círculo en la otra dirección (no en el sentido de las agujas del reloj) ¿cambia la fórmula? – Alin

1

x1 = x + r pecado 10

y1 = y + r cos 10

x2 = x - r sen 10

y2 = y - r cos 10

+0

Como comenté antes, tengo problemas con los botones que no se mueven correctamente. ¿Podría explicar por favor en qué casos obtengo + y en cuáles obtengo? En la fórmula. Gracias. – Alin

Cuestiones relacionadas