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

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

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 Report

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