Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

238
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!