Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

229
Vistas
¿Cómo detectar el borde del polígono al implementar un algoritmo de barrido plano?

Estoy trabajando en javascript y tratando de implementar un algoritmo que triangula un polígono (algo convexo o cóncavo pero que se supone que es un polígono simple, no autocruzado y sin agujeros).

He encontrado una solución en la web, pero solo está en pseudocódigo y estoy tratando de implementarla. (Fuente del algoritmo: https://sites.cs.ucsb.edu/~suri/cs235/Triangulation.pdf página 19). El primer paso es dividir el polígono en trapecios con un algoritmo de barrido plano , que se describe como "En cada vértice, extienda la línea vertical hasta que toque el borde de un polígono. Cada cara de esta descomposición es un trapezoide, que puede degenerar en un triángulo".

Teniendo en cuenta que mi polígono es un conjunto de coordenadas, ¿cómo sé que mi línea cruza el polígono?

Estaba pensando que podría hacer algo como

  1. toma la coordenada x horinzontal de mi vértice como x1
  2. tomar cada par de vértices sucesivos (x2, y2, x3, y3)
  3. prueba si están en cada lado de la línea (x2 < x1 y x1 < x3 o al contrario)
  4. en caso afirmativo, calcule la ecuación para la línea entre ellos
  5. usa esta ecuación para calcular y1

pero suena exagerado ya que tiene una complejidad O(n²) y el pseudocódigo anuncia O(n*log(n)). Y no puedo detenerme cuando encontré una solución, ya que mi polígono podría "doblarse" y habría múltiples puntos de cruce.

¿Hay otra forma de encontrar los puntos donde la línea cruza el polígono? (O una forma simple de triangular el polígono en primer lugar)

almost 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede haber formas más fáciles de resolverlo, pero este podría ser un enfoque:

Utilice elalgoritmo de Bentley Ottman para encontrar intersecciones en un conjunto de segmentos de línea. Dado que su polígono no se interseca a sí mismo, puede simplemente agregar sus segmentos de barrido y encontrar sus intersecciones en tiempo O ((n + k) log n) , donde k es el número de intersecciones. Siempre que el número total de intersecciones sea O(n) (que será el caso si su polígono no tiene una forma demasiado loca), la complejidad de tiempo resultante debería ser O(n log n) .

almost 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda