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

228
Visualizações
Encontrar la distancia más corta entre una curva Bézier cuadrática y un punto o rectángulo

Estoy trabajando en una aplicación de pizarra simple donde los dibujos están representados por curvas Bezier cuadráticas (usando la función CanvasPath.quadraticCurveTo de JavaScript). Estoy tratando de implementar la funcionalidad para que una herramienta de borrador o una herramienta de selección puedan determinar si están tocando un dibujo.

Para mostrar de lo que estoy hablando, en la siguiente imagen hay un dibujo rojo y necesito poder determinar que los rectángulos negros y el punto negro se superponen con el área del dibujo. Para fines de depuración, he agregado círculos azules que son puntos de control de la curva y la línea verde que es la misma curva Bezier pero con un ancho mucho menor.

Curva de Bézier cuadrática con rectángulos superpuestos.

He incluido mi código que genera la curva Bezier:

 context.beginPath(); context.moveTo(localPoints[0].x, localPoints[0].y); let i; for (i = 1; i < localPoints.length - 2; i++) { let xc = (localPoints[i].x + localPoints[i + 1].x) / 2; let yc = (localPoints[i].y + localPoints[i + 1].y) / 2; context.quadraticCurveTo(localPoints[i].x, localPoints[i].y, xc, yc); } // curve through the last two points context.quadraticCurveTo(localPoints[i].x, localPoints[i].y, localPoints[i + 1].x, localPoints[i + 1].y); context.stroke();

He podido encontrar respuestas sobre cómo determinar si un segmento de línea se cruza con una curva Bezier, pero no he podido encontrar cómo determinar si algo no se cruza con la curva real pero está lo suficientemente cerca como para considerar que se superpone a su " área". Para hacerlo, imagino que solo necesito encontrar la distancia entre la curva y el rectángulo/punto y luego asegurarme de que la distancia sea menor que el ancho utilizado para dibujar la curva, pero no estoy seguro de cómo encontrar esa distancia.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Algunos artículos/posts interesantes:

Cómo rastrear coordenadas en la curva cuadrática

https://coderedirect.com/questions/385964/nearest-point-on-a-quadratic-bezier-curve

Y si no funciona, tal vez pueda echar un vistazo a esta biblioteca: https://pomax.github.io/bezierjs/

Como sugirió Pomax en los comentarios, lo que está buscando está en la biblioteca y parece que hay una explicación adecuada.

Hay una demostración en vivo si quieres probarlo: https://pomax.github.io/bezierinfo/#projections
El código fuente está aquí: https://pomax.github.io/bezierinfo/chapters/projections/project.js

manifestación

Para usarlo, instálelo siguiendo los pasos de GitHub: https://github.com/Pomax/bezierjs

Por supuesto, crédito a Pomax por sugerir su biblioteca.

over 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