theorems exercises arc geometry circle geometric-arc

geometry - exercises - ¿Cómo determinar si un punto(X, Y) está contenido dentro de una sección de arco de un círculo(es decir, una porción circular)?



circle theorems exercises (3)

Imagina un círculo. Imagina un pastel. Imagine que intenta devolver un bool que determina si los parámetros proporcionados de X, Y están contenidos dentro de uno de esos trozos.

Lo que sé sobre el arco:

Tengo CenterX, CenterY, Radius, StartingAngle, EndingAngle, StartingPoint (punto en la circunferencia), EndingPoint (punto en la circunferencia).

Dada una coordenada de X, Y, me gustaría determinar si esta coordenada está contenida en algún lugar dentro de la diapositiva del pastel.


Comprobar:

  1. El ángulo desde el centroX, desde el centro hasta X, Y debe estar entre el inicio y el punto final.
  2. La distancia desde centerX, centerY a X, Y debe ser menor que el Radio

Y tendrás tu respuesta.


Convierte X, Y a coordenadas polares usando esto:

Ángulo = arctan (y / x); Radio = sqrt (x * x + y * y);

Luego, el ángulo debe estar entre StartingAngle y EndingAngle, y el radio entre 0 y tu radio.


Sé que esta pregunta es antigua pero ninguna de las respuestas considera la ubicación del arco en el círculo.

Este algoritmo considera que todos los ángulos están entre 0 y 360, y los arcos se dibujan en dirección matemática positiva (en sentido contrario a las agujas del reloj)

Primero puede transformar a coordenadas polares: radio (R) y ángulo (A). Nota: use la función Atan2 si está disponible. wiki

R = sqrt ((X - CenterX) ^ 2 + (Y - CenterY) ^ 2)

A = atan2 (Y - CenterY, X - CenterX)

Ahora si R <Radio el punto está dentro del círculo.

Para verificar si el ángulo está entre StartingAngle (S) y EndingAngle (E), debe considerar dos posibilidades:

1) si S <E entonces si S <A <E el punto se encuentra dentro del corte

2) si S> E entonces hay 2 escenarios posibles

  • si A> S y A> E

entonces el punto se encuentra dentro de la rebanada

  • si A <S y A <E

entonces el punto se encuentra dentro de la rebanada

En todos los demás casos, el punto se encuentra fuera de la división.