2011-04-01 25 views
6

Estoy tratando de averiguar cómo obtener la distancia de dos círculos en relación con las esquinas de sus cajas de contenedores cuadrados. Necesito ayuda con las matemáticas aquí.Encontrar la distancia entre dos círculos

Finding distance between two circles

¿Cómo puedo calcular el número de píxeles de la línea marcada con un signo de interrogación?

Apreciar la ayuda como siempre.

+3

¿Qué dows tiene esto que ver con la programación? debe moverse a http://math.stackexchange.com/ – froeschli

+0

BTW esto es todo por una aplicación Flash en la que estoy trabajando. – Alex

+0

Todavía no veo la relevancia en términos de programación.Sin embargo, si está pidiendo el algoritmo programático, entonces cabe aquí. – froeschli

Respuesta

12

tldr: Calcule la distancia entre cada punto central de los círculos, luego reste el radio 'de cada círculo a partir de eso.

Para el propósito de una demostración, vamos a asumir la siguiente:

  • El diámetro 200 px (r1 = 100) círculo está en el (x, y) Coordenadas (0, 0), y
  • el diámetro 100px (r2 = 50) el círculo está en las coordenadas (x, y) de (150, -150).

Teniendo en cuenta que la distancia entre sus centros es: Distance

para encontrar la distancia entre sus límites, restamos el radio de cada círculo de la distancia entre sus centros.

Esto nos deja con la ecuación:

sqrt((x2 − x1)^2 + (y2 − y1)^2) − (r2 + r1) 

Inserción de sus valores en lo anterior da:

sqrt((150 − 0)^2 + (-150 − 0)^2) − (100 + 50) = 62.132034356px 
2

Veamos ... cada radio es la mitad de cada lado de la longitud, y restando la suma de los radios de la distancia entre el centro le da la cantidad que queda.

Espero que ayude?

+0

Eso ayuda, mucho ... bastante simple entonces. :) – Alex

3

¿Tiene el punto medio de cada círculo? Si lo hace, primero calcule la distancia desde el centro de los círculos.

distance² = center1² + center2²

Entonces, usted necesitará menos el radio de ambos círculos. En su caso, será 150 (100 + 50)

2

La versión algebraica simplificada de la respuesta de Daniel es

(r1 + r2) * (sqrt(2) - 1) 
= (s1 + s2) * (sqrt(2) - 1)/2 

donde r1 , r2 son los dos radios y s1, s2 son los dos lados cuadrados. Esto se ve fácilmente mirando individualmente cada cuadrado y observando que la distancia d1 desde el centro del círculo/cuadrado hasta la esquina cuadrada es sqrt (2) * r, y la distancia deseada dentro de ese cuadrado es d1 - el radio del círculo r.

Cuestiones relacionadas