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

230
Visualizações
¿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 Respostas
Responde à pergunta

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 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