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

        Programmer for 25 years. Only time I have ever used math more complicated than simple multiply/divide was… actually never.

        That one time when I copy/pasted a formula for linear interpolation, was still just multiplication and division. And I still have no idea how it works.

        I’ve even done OpenGL and graphics programming and still haven’t needed any algebra/trig/etc, although I don’t do complex 3D rendering or physics or anything like that.

        I wish I knew how to do cool programming stuff like draw circles and waves and stuff though, but I’ve never seen a tutorial that didn’t go WAY over my head immediately.

        • FooBarrington@lemmy.world
          link
          fedilink
          arrow-up
          7
          ·
          edit-2
          2 months ago

          Drawing a circle is actually pretty simple! Say we want to draw one with:

          • radius r=5
          • center C=(0,0)
          • 1000 points

          The logic would be:

          for (let i = 0; i < 1000; i++) {
              // full circle is made up of 2 * PI angles -> calculate current loop angle
              const angle = (2 * Math.PI) * (i / 1000)
              const x = r * Math.cos(angle)
              const y = r * Math.sin(angle)
              drawPixel(x, y)
          }
          

          The circle starts being drawn at (5, 0). As y approaches -5, x gets smaller until it hits 0. Then x approaches -5 and y approaches 0, and so on.

          • Valmond@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            2 months ago

            That won’t work well ;-) it will draw 1000 pixels whatever the circumference!

            A good start though, for sure.

            • FooBarrington@lemmy.world
              link
              fedilink
              arrow-up
              1
              ·
              2 months ago

              It’s just meant to be a simple example. If someone says other tutorials quickly go over their head, it’s not a good idea to introduce unnecessary concepts to start with.