• refalo@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    7 months ago

    Any code you can share? I’m interested in finally learning how to apply some simple geometry maths to my programming, but I failed math in school.

    • Buddahriffic@lemmy.world
      link
      fedilink
      arrow-up
      3
      ·
      7 months ago

      Check out 3d graphics related stuff, there’s a ton of geometry used there, whether you’re ray tracing or using 2d projection.

      A ray tracer is basically made up of:

      • ray caster algorithm to map pixels to rays and puts them into an image
      • data structures to contain scene data (like geometry, lighting, materials)
      • algorithm that represents a ray as a line and determines which parts of the scene geometry that line intersects with, selecting the one nearest and in front of the eye (or wherever the front is culled)
      • same algorithm used to determine if a ray from that intersection point to each light has anything between the point and light
      • also need to get the angle to the light for each ray that isn’t blocked
      • a shading algorithm that uses the lights, materials, and angles (and maybe more info) to determine the colour of that ray
      • some code that does something with the resulting image, like display it or save to a file

      And that’s basically it. It will be slow without optimizations but it’s cool af seeing your renders. And you can improve on it from there if you want. Though a warning: you might get obsessed with analysing different visual phenomena and thinking about how to render something like that for a while after doing this, which might also lead to gaining a critical eye for where 3d engines fail to be accurate.