¿Estás tratando de calcular el mapa de oclusión para sombras o visibilidad? ¿Es un motor vóxel o … un clon de Minecraft? 🙂
Para abordar este problema, le diría que lo resuma al caso más simple:
Imagine una sola fila de cubos que está mirando de frente (solo puede ver un cubo sin importar cuántos haya en la fila. Cada cubo está vacío o lleno, pero no sabe cuál sin probarlo). significa que tienes que probar cada cubo desde el frente hasta la parte trasera hasta que llegues a uno lleno. En promedio, para una fila de n cubos, la operación tomará desde O (c) (tiempo constante) hasta O (n) ( peor de los casos). Eso no está mal, hasta que comience a factorizar en otras dimensiones: imagine una cuadrícula de tales filas, luego su tiempo de operación se convierte en O (n ^ 2) a (peor de los casos) O (n ^ 3). Cualquier cosa sobre O (n * log (n)), como programador, debería hacer que te encojas.
- ¿Cuál es el significado de "intercalar" las transacciones?
- ¿Cómo puedo procesar grandes conjuntos de datos con mi computadora portátil? En una competencia de minería de datos, hay un CSV de 1GB de información del cliente para procesar. ¿Hay alguna manera de procesarlo sin cargarlo todo en la RAM, o podría procesar solo una parte a la vez?
- ¿Cómo funcionan realmente las tablas de arcoiris y el hash?
- ¿Puedes convertir una consola de juegos en una computadora?
- ¿Cómo aprender ciencia de datos de una manera eficiente en el tiempo? La ciencia de datos es un campo amplio. ¿Cuál es el '20% 'del tema que puedo dominar para darme el '80%' del valor?
En esencia, es una operación de “búsqueda” muy básica, y tiene algunas opciones para hacerlo más rápido:
- Compresión: comprima todos los cubos en prismas rectangulares más grandes, de esa manera no tendrá que probar cada uno. Los octrees y las particiones de espacio binario pueden ser útiles aquí.
- “Fíngelo. Utilice la compresión de probabilidad o “con pérdida” en los datos para que sea más rápido buscarlos, a costa de pequeños errores en el procesamiento.
- Cachéalo. Caché la oclusión, si es posible para varios ángulos de visión diferentes, e interpolar linealmente entre los resultados.
- Use una combinación de técnicas, o piense mucho y cree las suyas propias. Piense en los datos en términos de diferentes transformaciones o sistemas de coordenadas (es decir, coordenadas polares / esféricas o dimensiones superiores (4)).