Rotar un punto en un círculo con radio y posición conocidos

tener un circulo A ( X a , y a ) de radio R y un punto en el circulo B ( X b , y b ) , ¿cómo podemos rotar el punto con un ángulo conocido α (radianes o grados, en realidad no importa) en el círculo por lo que obtendremos un nuevo punto en el círculo C ( X C , y C ) , como en la imagen de abajo?

Como calcular el C coordenadas?

Aquí el ángulo de rotación es 90 . En este ejemplo, X b = X a , y b = R , α = 90 . De la imagen vemos que X C = R y y C = y a .

Sin embargo, quiero una solución general para cualquier A , B , R y α .

¿Estás familiarizado con la matriz de rotación? ¿Cambio de origen?
@Shailesh Vi algo en Wikipedia, pero realmente no entendí las cosas. Creo que sé lo que significa el cambio de origen.
De todos modos, Brent ha dado una respuesta completa. Estaba tratando de guiarte hacia eso.

Respuestas (2)

Veamos un problema más simple. Suponga que tiene la situación que se muestra en la siguiente figura:

ingrese la descripción de la imagen aquí

Entonces, dado el ángulo α , las coordenadas del punto C son:

C X = r porque α y C y = r pecado α

dónde r es el radio del círculo.

Ahora veamos un problema un poco más complicado, que se muestra a continuación:

ingrese la descripción de la imagen aquí

Esto es muy similar a la situación anterior. De hecho,

C X = r porque ( α + β ) y C y = r pecado ( α + β )

Usando las relaciones trigonométricas pecado ( α + β ) = pecado α porque β + pecado β porque α y porque ( α + β ) = porque α porque β pecado α pecado β , podemos escribir lo anterior de la siguiente manera:

C X = r porque α porque β r pecado α pecado β y C y = r pecado α porque β + r pecado β porque α

Pero, espera... Mirando la situación anterior y reemplazando C con B y α con β , vemos eso

B X = r porque β y B y = r pecado β

Por lo tanto, podemos escribir

C X = B X porque α B y pecado α y C y = B X pecado α + B y porque α

Pero lo que quieres es esto, en cambio:

ingrese la descripción de la imagen aquí

Bueno, podemos mover todo rígidamente por el vector O A de modo que A ahora es el origen del sistema de coordenadas y obtenemos la situación justo arriba. Esto equivale a restar A de ambos B y C Llegar B y C en lo anterior, y encontramos

C X A X = ( B X A X ) porque α ( B y A y ) pecado α
C y A y = ( B X A X ) pecado α + ( B y A y ) porque α

Entonces finalmente,

C X = A X + ( B X A X ) porque α ( B y A y ) pecado α
C y = A y + ( B X A X ) pecado α + ( B y A y ) porque α

Esto también es útil, pero no entiendo el radio. r desapareció en la solución final. ¿No se supone que debería estar allí también?
¡Es! Está escondido en las coordenadas de A y B . Por ejemplo, B X A X = r porque β .
¡Lindo! ¡Te voté!
Gracias. Lástima que me tomó mucho tiempo hacer las fotos. Esperaba que aceptaran mi respuesta, pero Brent se me adelantó. jajaja
Oh, una última cosa: mi ángulo α es el negativo tuyo ya que tengo las ubicaciones de B y C intercambiado con respecto a su imagen.
Acepté su respuesta ya que es más detallada. Lástima que SE no permite aceptar múltiples respuestas. :)
Muy mal de hecho. ¡Gracias!
¿Cuál es el punto de complicar el ejemplo a α y β, y luego inventar fórmulas en lugar de usar fórmulas que ya funcionan? r ( C o s α ) , r ( s i norte β ) ?

Esto se llama una transformación afín. Básicamente, la idea es desplazar temporalmente nuestro círculo para que esté centrado en el origen, aplicar una matriz de rotación al punto como se hace en álgebra lineal y luego desplazarlo hacia atrás. Usando la notación que tienes en tu problema, además de agregar

METRO = ( porque ( α ) pecado ( α ) pecado ( α ) porque ( α ) )
Para representar la rotación en sentido antihorario a través de un ángulo. α (si lo quiere en el sentido de las agujas del reloj como aparece en su imagen, simplemente cambie el pecado ( α ) con el pecado ( α ) ), esta transformación viene dada por:
C = METRO ( B A ) + A
dónde A , B , C son los vectores que representan sus respectivos puntos.

donde A,B,C son los vectores que representan sus respectivos puntos. -- ¿Cómo construir estos vectores? Además, cómo multiplicar METRO ( B A ) ?
Por ejemplo, en tu foto, tienes A como el punto ( X a , y a ) , por lo que sería el vector ( X a y a ) . multiplicando METRO ( B A ) se hace usando la multiplicación de matrices: en.wikipedia.org/wiki/…
¡Suena bien! En realidad, es multiplicar dos matrices. ¡Muchas gracias!