Page 1 of 1

Simple math practice

Posted: Thu Apr 13, 2017 5:10 pm
by Marcus Aseth
Since I suck at math I thought I could make myself a tool to help me visualize it and see relations between numbers, practice some very useful math stuff needed for game development and such.

So I started today trying to visualize the distance formula x^2 + y^2 = c^2

Program below, feel free to try and break it :joker:
keys:
left mouse button press = add point to the grid
left mouse button drag = drag around selected point
numpad+ = zoom (enlarge) the grid
numpad- = zoom (shrinken) the grid
F1 = switch between fullscreen and windowed

After adding a second point, the next point you select will display the distance from the next point in the info pannel on the right :awesome:
MathPractice.love
(7.74 KiB) Downloaded 170 times

Re: Simple math practice

Posted: Fri Apr 14, 2017 1:22 am
by Marcus Aseth
I was trying to add a dashed line and I got this (img below)
This is the code (code below)
There is any easy way for me to add a moving animation to the dashes in that code? Like if they are flowing from one point to the next :crazy:
(the points passed to this function are ordered by index, and when the last index is the starting point the end point is index 1, it goes in a circle)

Code: Select all

function dashedLine(startX, startY, endX, endY)

  --dashed line segments dinamically increased based on the 2 points distance
  local lineDivisions = 1.5 * round(findDistance({ x = startX, y = startY }, { x = endX, y = endY }))
  --split the distance between the 2 points into N segments, distX/distY are 1 segment lenght
  local distX = math.abs(endX - startX) / lineDivisions
  local distY = math.abs(endY - startY) / lineDivisions
  
  --set on which direction the segment should go
  distX = startX < endX and distX or -distX
  distY = startY < endY and distY or -distY
 
  --offset to center the dashed line (not truly working though)
  local offsetX = (startX + distX / 4)
  local offsetY = (startY + distY / 4)

  for i = 0, lineDivisions - 1 do
    local currX = offsetX + distX * i
    local currY = offsetY + distY * i
    local nextX = currX + distX / 2.5
    local nextY = currY + distY / 2.5
    love.graphics.line(currX, currY, nextX, nextY)
  end
end



Image

Re: Simple math practice

Posted: Thu Apr 20, 2017 2:29 pm
by OnACoffeeBreak
I'm new to LOVE myself... I think it's neat to use it to visualize trigonometric problems, and I really like how your demo looks and feels.

If I understand correctly, you're using the Pythagorean theorem to calculate the distance between two points. I wonder if it would help to present an interactive visual proof of the theorem. Maybe one of these will work:

https://math.stackexchange.com/question ... as-theorem

https://math.stackexchange.com/question ... an-theorem

https://math.stackexchange.com/question ... m-you-know

Re: Simple math practice

Posted: Thu Apr 20, 2017 5:07 pm
by raidho36
One fantastic thing about math is that you don't need to intrinsically understand it or know what representations it has, you just need to know how it works and do equations right. Things like quaternions and matrices and whatnot.