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

170
Visualizações
Zoom y panorámica de lienzo JS con datos de gran tamaño (100k-1M de objetos)

Quiero implementar zoom y panorámica rápidos y de alta resolución en mi Canvas. Como ya puede leer en el título, tengo una gran cantidad de datos, por lo que usar CanvasRenderingContext2D.scale() y CanvasRenderingContext2D.translate() con redibujar no es una opción, porque es demasiado lento. Ya intenté usar Imágenes, pero quiero ver todos los puntos de datos mientras hago zoom y paneo. Dibujar solo los puntos de datos que son visibles es un buen comienzo, pero esto hace que el zoom y la panorámica solo sean posibles con un zoom muy cercano, pero en realidad quiero poder alejarme hasta que pueda ver todos los puntos de datos. Los puntos de datos se dibujan con círculos y están muy juntos si eso te ayuda de alguna manera. Agradezco cada sugerencia sobre cómo manejar esto.

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

0

Creo que deberías probar uno de estos:

  1. WebGL (es algo de línea OpenGL para navegadores web)
    materiales: página web del grupo khronos repositorio: GitHub
  2. Materiales de three.js: repositorio de la página web de three.js : GitHub

Los sugerí porque también pueden trabajar con 2D (no solo con 3D) y tienen herramientas para trabajar con texturas grandes. Puede crear una cámara estática que solo cambiará la distancia a la superficie (con textura) - zoom.

Con Three.js hay una manera de cargar mapas de bits progresivamente con cadenas mipmap o con "Mapa de entorno de resplandor prefiltrado y mipmapeado: PMREMGenerator .

about 4 years ago · Juan Pablo Isaza Relatório

0

Un enfoque alternativo que funcionó para mí fue tener un lienzo (oculto) para dibujar y un lienzo de ventana gráfica que el usuario pudiera ver. Dibujar en el lienzo oculto le permite dibujar una imagen más grande y luego simplemente actualizar la ventana gráfica redibujando el lienzo para ver solo la parte central (puede usar viewportContext.drawImage(sourceCanvas, -canvasWidth / 2, -canvasHeight / 2) para dibujar de un lienzo a otro).

Para implementar el zoom y la panorámica, simplemente almacenaría la imagen desde el lienzo de origen al principio (en el mouseDown o en el desplazamiento) y la volvería a dibujar de acuerdo con la nueva posición/desplazamiento del mouse (simplemente traduciéndola o cambiando sus dimensiones funcionará) al lienzo de origen .

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