Este hilo será renovado cada lunes

  • Pudutr0n@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    22 days ago

    Básicamente consiste en 3 partes: hacer un rendereador 3d, simular física sin colisiones, y después manejar colisiones con algunos requerimientos adicionales.

    el renderadeor 3d involucra modelar un espacio-mundo (con sus coordenadas y dimensiones), y transformar lo que ocurre en él en espacio-cámara y luego espacio-pantalla a través de proyección con perspectiva. Esto suena difícil pero son fórmulas matemáticas estándares que enchufas y funcionan mágicamente. Después tienes que establecer los vértices, lados y caras de las figuras que vas a poner en el espacio mundo. Una vez que tienes definidos los puntos y lados, tienes que implementar fórmulas que definan exactamente qué caracteres (o pixeles) de la pantalla se dibujan al unir dos puntos y dibujar una línea. Después lo mismo para rellenar caras (generalmente se subdividen en triángulos y así sólo necesitas 1 fórmula que establezca qué pixeles pintar para dibujar un triángulo a partir de sus tres vértices. Luego sacar la normal de cada triángulo y la cruzas con el vector de la orientación de “la cámara”. Los que están mirando hacia atrás están en la parte de atrás del dado así que no los dibujas. Felicidades. Ahora entiendes cómo se simula 3d en un computador.

    Después aplicas movimiento y rotaciones, que son fórmulas estándar. Si quieres modelar bien las rotaciones sin problemas, eso sí, tienes que calcular unas hueás que se llaman cuaternones (coordenadas angulares de 4 dimensiones a partir de números imaginarios). Y no me preguntes por qué mierda por qué, pero usando 4 dimensiones puedes simular rotación mucho mejor que con ángulos euclidianos (ejes xyz)

    con eso tienes figuritas que se mueven y giran. ahora necesitas que choquen, desaceleren, reboten, y caigan con gravedad… No voy a entrar en gran detalle, pero son fórmulas relativamente sencillas e intuitivas. mucha matemática vectorial.

    El problema no es simular colisiones, gravedad o movimiento. El problema real es determinar cuándo un efecto es tan pequeño que ya no lo deberías considerar. Cuándo las cosas entran en estado de reposo.

    En fin, no te lateo más pero esa es la idea general.

    • Blank@feddit.cl
      link
      fedilink
      arrow-up
      3
      ·
      22 days ago

      Y programaste todo eso en bash?

      Oye y aprendiste todo eso autodidacta o tienes estudios formales?

      • Pudutr0n@lemmy.world
        link
        fedilink
        arrow-up
        5
        ·
        22 days ago

        sí, en bash. me cambié a linus el año pasado y necesitaba un proyecto pa aprender sintaxis. soy hobbysta completamente autodidacta de la programación. las implementaciones que hago por pega generalmente son macros o apps scripts muy acotados y simples. en matemáticas tengo estudios formales por los ramos de economía en ingeco y siempre he tenido facilidad (y fascinación) por abstracciones que permiten modelar aspectos de la realidad de manera inequívoca y precisa.