Cómo calcular los Cordinados de punto final en un Arco si el centro y las coordenadas de inicio son Conocidos junto con el ángulo de barrido en Android ..?
Estoy trabajando en un gráfico circular donde he dibujado arcos con ángulos de barrido conocidos.Ahora quiero mostrar las etiquetas en el centro de cada arco, o decir dibujar una línea desde el centro de cada arco.
Dado que conozco las coordenadas del centro, las coordenadas de inicio, el ángulo de barrido y el radio, quiero calcular las coordenadas finales.
- Cómo calcular el tamaño de un archivo en Android
- Android Push Notificación del dispositivo a otros dispositivos
- Android - Extensiones de Google Maps - IllegalArgumentException
- Slider en la aplicación para Android
- Android EXTRA_MESSAGE no reconocido dentro de Recycler View Adapter
También he intentado esto dibujando un triángulo que empareja todas las coordenadas y uso la fórmula de la distancia también pero no sé resolver las ecuaciones en java.
Por favor, proporcione una solución adecuada.
- ¿Cómo puedo configurar el color estrella de la barra de calificación?
- Cómo pasar una clase derivada a una función que acepta el tipo principal
- ¿Qué tan compatible es la implementación de Java de Android exactamente?
- String establecida en ArrayList?
- Fragmentos en ViewPager son nulos después onresume
- Debe registrar esta subclase ParseObject antes de instanciarla
- Práctica recomendada para que el cliente android se comunique con un servidor mediante subprocesos
- Cargar archivos y otros datos de Android a través de la solicitud HTTP POST
Trabajo en vectores. Sea el A
el vector desde el centro del círculo hasta el inicio del arco. Calcular esto por
A = start_point - centre
Sea theta
el ángulo de barrido (trabajo en radianes). Utilice una matriz de rotación para girar el inicio del arco alrededor del centro del círculo. http://en.wikipedia.org/wiki/Rotation_matrix
Explícitamente,
newpoint_x = cos(theta)*A_x + sin(theta)*A_y newpoint_y = -sin(theta)*A_x + cos(theta)*A_y
donde A_x
es x componente de A
(y de manera similar para A_y
). Entonces
newpoint = centre + (newpoint_x,newpoint_y)
es el punto que desea. Puede ser que el punto aparezca girado en sentido contrario (en sentido contrario a las agujas del reloj) y si es así,
theta = -theta
en lugar. Esto debería funcionar para usted.
Si desea evaluar el punto medio del arco, utilice
theta = theta / 2
StartAngle = atan2(StartY-CenterY, StartX - CenterX) EndX = CenterX + Radius * Cos(StartAngle + SweepAngle) EndY = CenterY + Radius * Sin(StartAngle + SweepAngle)
Otra forma: Hacer producto de matriz de
shift by (Center - Start) rotation by SweepAngle back shift
y aplicar esta matriz al punto de inicio (multply matriz y vector)
Estoy trabajando en el gráfico circular y dibujaré etiquetas en el punto medio entre los puntos inicial y final del arco .
-
Tome el punto inicial del arco:
Point2D p1 = arc.getStartPoint(); Point2D p2 = arc.getEndPoint();
-
Calcular el punto medio
Point2D midpoint = new Point2D( (p1.getX()+p2.getX())/2, (p1.getY()+p2.getY())/2);
El punto para dibujar es el punto medio .
La fórmula del punto medio
- Android Crittercism init tanto en la aplicación como en la actividad
- Rellenar un ListView desde un ArrayList <HashMap <String, String >>