Nunca he hecho cosas como esta antes, pero he hecho algunos autómatas celulares complejos . Lo siento si esto es demasiado vago.
La idea básica aquí es marca todas las partículas que deben "seguir cayendo" o "no se mueven" y excluir desde un procesamiento complejo (con un procesador especial corta/rápida para la lista de "caída" - todo lo que necesitas hacer es dejar caer cada uno por un píxel).
- La aceleración para partículas no móviles - partículas estáticas (las llamaré partículas S), es que no se mueven. Marcarlo para todas las regiones que no se mueven (como una "pared" inmune a la gravedad o "tazón" que un usuario podría hacer. Marcar las partículas por encima de S si son estables, por ejemplo, para líquido, si tiene partículas S en , y para ambos lados de sí mismo, no se moverá. Para algo así como la arena que forma pilas, si tiene una S en cada uno de los tres puntos debajo de ella, hace una pila, obtendrá bonitos 45- grados acumulados como este, estoy seguro de que puede cambiarlo para hacer que algunas cosas formen montones más empinados o menos escarpados. Haga un mapeo S de abajo hacia arriba
- La aceleración de partículas sin partículas debajo de ellas está cayendo - Partículas F Las partículas con una partícula F debajo de ellas también son partículas F. Marque estas de abajo hacia arriba también.
- Partículas sin marcar F o S a re complejo, pueden comenzar a caer, dejar de caer, o rodar, use el procesador lento, que ya tiene, para manejarlos, no debería haber muchos.
Al final lo que tendrá es muchas partículas rápidas. Los que están en una pila/lago y los que llueven. Las partículas sobrantes son aquellas en el borde de las pendientes, en la parte superior de los lagos o en otras posiciones complejas. No debería haber tantos como partículas rápidas.
Marca visualmente cada tipo de partícula con un poco de color, las partículas complejas son de color rojo brillante. Encuentre casos donde todavía es lento y vea qué otros tipos de procesadores rápidos debe hacer. Por ejemplo, es posible que al hacer muchas pilas de arena se creen muchas áreas rojas a lo largo de las pendientes, es posible que desee invertir en acelerar las "zonas de laminación" a lo largo de las laderas de las pilas.
Espero que tenga sentido. ¡No olvide volver y editar una vez que haya resuelto algo!
es la función drawPoint (x, y, Paint) de Android. – Hamel