2011-06-07 30 views
13

Imagine un círculo. Imagina un pastel. Imagine que trata de devolver un bool que determina si los parámetros proporcionados de X, Y están contenidos dentro de uno de esos trozos de tarta.¿Cómo se determina si un punto (X, Y) está contenido dentro de una sección de arco de un círculo (es decir, un corte circular)?

Lo que sé sobre el arco:

tengo el centerx, centery, Radio, 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 circular.

+1

¿Por qué se etiquetan C# y Java? Esto se ve como una simple pregunta matemática. – jzd

+1

Whoops. Originalmente tenía la pregunta como específica del idioma, pero luego la cambié para ser más genérica. Olvidé editar las etiquetas. Disculpas – AlishahNovin

Respuesta

31

Comprobar:

  1. El ángulo de la centerx, centery a través de X, Y debe ser entre el inicio & endAngle.
  2. La distancia desde centerx, centery a X, Y debe ser menor que el radio

y que tendrá su respuesta.

+2

Ahhh, los problemas con el exceso de pensamiento ... – AlishahNovin

+0

@Wrikken, cómo determinar que un ángulo está entre dos otros ángulos, usando ecuaciones? – Demian

+0

@Demian: Esto es un poco viejo, pero puedes encontrar una respuesta aquí: https://math.stackexchange.com/questions/1596513/find-the-bearing-angle-between-two-points-in-a- 2d-space – rjcarr

14

Convert X, Y a las coordenadas polares de usar este:

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

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

+0

Creo que te refieres a Radius = sqrt (x * x + y * y); ¡y gracias! – AlishahNovin

+0

@AlishahNovin Sí, corregido :) –

+0

¡Has salvado mi vida! ¡Gracias! :) – marverix

Cuestiones relacionadas