Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

122
Visualizações
Calcular de qué lado de un punto está otro punto

Necesito calcular de qué lado de un punto está otro punto y he estado buscando en Google, pero no tengo ni idea de qué significan todas esas ecuaciones matemáticas o cómo se traducen en código o JavaScript más específicamente.

Tengo la siguiente información:

  • Punto A: x, y y ángulo (dirección hacia la que va el punto, norte en el sentido de las agujas del reloj)
  • Punto B: x e y

Ahora, ¿cómo sé si el punto B está a la izquierda o al lado derecho del punto A? Las respuestas en JavaScript son muy apreciadas.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Considere el signo de expresión (si el angle está en grados, multiplíquelo por Math.PI/180 para obtener radianes)

 cross = (Bx - Ax)*Math.sin(angle)-(By - Ay)*Math.cos(angle)

Editar: para el sistema de coordenadas OX norte, en el sentido de las agujas del reloj es necesario intercambiar cos y sin

 cross = (Bx - Ax)*Math.cos(angle)-(By - Ay)*Math.sin(angle)

Valor positivo para el lado derecho, valor negativo para el lado izquierdo (o viceversa, dependiendo de la orientación de su sistema de coordenadas)

about 4 years ago · Juan Pablo Isaza Relatório

0

Tú tienes:

  • un punto A (Ax, Ay) ;
  • una dirección de movimiento para A dada como un ángulo A.angle ;
  • un punto B (Bx, By) .

Quiere comparar la dirección de movimiento de A con la dirección del vector AB.

Las coordenadas del vector AB se pueden calcular con una simple resta:

 AB.x = Bx - Ax AB.y = By - Ay

Puede calcular el ángulo correspondiente al vector de dirección AB usando atan2 . Convenientemente, esa función es parte de la biblioteca matemática estándar de la mayoría de los lenguajes de programación.

Cuando usamos atan2, debemos tener cuidado con la convención. En los comentarios, especificaste que querías la convención en el sentido de las agujas del reloj. Para otras convenciones, consulte Wikipedia: atan2 y convenciones . También tenemos que convertir de radianes a grados, lo cual se puede hacer fácilmente con el factor de conversión 180 / pi .

 AB.angle = atan2(AB.x, AB.y) * 180 / pi if AB.angle < 0: AB.angle = AB.angle + 360

Entonces todo lo que tenemos que hacer es verificar si AB.angle está en el intervalo [A.angle - 180°, A.angle] (izquierda), o en el intervalo [A.angle, A.angle + 180°] (derecha), teniendo cuidado porque todos los cálculos son módulo 180°.

 // assuming A.angle > 0 && A.angle < 360 if A.angle > 180: if AB.angle > A.angle - 180 && AB.angle < A.angle: return "Left" else: return "Right" else: // A.angle < 180 if AB.angle > A.angle && AB.angle < A.angle + 180: return "Right" else: return "Left"
about 4 years ago · Juan Pablo Isaza Relatório

0

Vamos a romper esto.

  • Tenemos una línea dirigida L, que pasa por el punto A en la dirección a (para el ángulo).
  • Tenemos un punto B.
  • Y la pregunta es: ¿B está a la izquierda oa la derecha de L?

Lo que necesitamos es el ángulo de la línea (contra el 'norte', también conocido como eje y positivo) que pasa por A y B. Esto nos permite comparar esos ángulos:

  • si la diferencia está en -180°..0° o 180°..360° (-pi..0 o pi..2pi en radianes), B está a la izquierda de L,
  • si la diferencia está en -360°..-180° o 0°..180° (-2pi..-pi o 0..pi en radianes), B está a la derecha de L.

Sería más fácil encontrar la matemática correcta si su ángulo de 0° fuera 'este, en sentido contrario a las agujas del reloj' (como es la convención matemática), pero simplemente intercambiaremos x e y y estaremos listos (ya están cambiado en las siguientes líneas!).

Obtenemos ese ángulo (llamémoslo b) solo de los puntos, pero al principio estará en radianes (no en grados):

 b_rad = Math.atan((Ax - Bx) / (Ay - By));

No especificaste si el ángulo está en grados o en radianes. Suponiendo grados, el resultado debe convertirse de radianes:

 b_deg = b_rad * (180 / Math.PI);

Ahora solo necesitas tomar la diferencia:

 delta = a_deg - b_deg;

y use ese delta en la comparación que describí anteriormente.

(Si no pensé bien, esta matemática da los resultados opuestos de lo que se necesita; en este caso, debe intercambiar a_deg y b_deg en el cálculo delta)

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda