Advertisement

Resources to get good at math?

Started by July 27, 2017 07:16 AM
38 comments, last by ErnieDingo 7 years, 3 months ago

A matrix is not the only way to solve it, you can solve for one variable and then solve for the other like this:

h = 24/w ; h = 10 -w

24/w = 10 - w; -> 24 = 10w - w^2;

w^2 -10w + 24 = 0;

Then solving this quadratic equation we get:

w = 6 or w = 4; then: h = 4 or h = 6;

I skipped some steps for the sake of brevity.

Now to solve it using a matrix would probably involve using Cramer's Rule.

I know Khan has it but I avoided just to keep to my rule to watch all the video in order, was more like a curiosity :P

Another reason to hurry up with this basic stuff so I get there :D

Thx for showing that Aerodactyl, I actually need a refresher on how to solve quadratic equations though, hope they'll come up soon on khan academy  x_x

Advertisement

If you're looking for additional resources, you could also take a look at BSVino's "Math for Game Developers" video tutorials.

- Jason Astle-Adams

4 hours ago, jbadams said:

If you're looking for additional resources, you could also take a look at BSVino's "Math for Game Developers" video tutorials.

Thanks for mentioning it, I happen to be already registered to his youtube channel, also watched a bunch of his videos in the past and completing the playlist he created is in the list of the things I want to do, but I am sure this will come in handy to someone else who end up in this topic :P

I'm going to give you a different perspective, which may not be what you were looking for in this thread, but I want to put it out there anyway: Getting good at math is not about accumulating math knowledge, but about learning how to solve problems.

When I use the word "problem" here I don't mean an exercise to verify that you understood and can immediately apply some math content you just learned. I mean something closer to a real-life situation, where it's not easy to see initially what the path to a solution might look like, you explore some, you find some patterns, you hypothesize and solve intermediate problems...

Here's a good example:

"We have 100 lockers, initially all closed, numbered 1 to 100. 100 people are going to pass by the lockers, and they are labelled 1 to a 100. Person 1 will visit all the lockers; person 2 will visit only the even lockers; person 3 will visit only the lockers whose numbers are multiples of 3; etc. When a person visits a locker, it changes its state; so if the locker was open they will close it, and if it was closed they will open it. So to be clear, person 1 will open all the lockers; person 2 will close all the even lockers and leave the odd ones open; person 3 will close locker 3 (because it was open), open locker 6 (because it was closed), etc. After all 100 people have pass by the lockers, how many of them will be open?"

You only learn to solve such problems by practicing. Give it a try, and don't be frustrated if you don't get very far. There are spoilers later in this paragraph, so I recommend you stop reading now and try it. Try to simulate the situation by hand, perhaps substituting 100 by a more manageable number like 10. Perhaps you'll observe some pattern so now you just need to prove it. Or you'll find some way to reformulate the problem in simpler terms, something about how many divisors a number has. Maybe you will explore a few numbers in light of this reformulation and you'll learn how the divisors can be paired together in some natural way. Finally, you'll understand the problem in some new, more informative way, which will allow you to crack it.

I don't know very many resources that teach this skill. There is a classic book by Pólya called "How to Solve It", which is a good place to start. There are websites with collections of problems, like Project Euler . Or perhaps you can find training materials for Math Olympiad.

One point of view on math education is that all the algebra, geometry, combinatorics, etc. that we go through in school is just a collection of classic situations where we can hone our problem-solving skills. Once you get good at solving problems, any math content you learn becomes a tool in your belt, and having a good collection of tools allows you to solve more problems, or solve them more easily. But just teaching the content without actually solving problems is like giving someone a tool box and pretending they can now fix anything.

 

Currently I am kind of "meh" at that :D

About project Euler, don't know if you guys know this place -> https://www.hackerrank.com/contests/projecteuler/challenges

Basically you have an IDE in the browser, you choose the language you use and solve the challenge, I got 100% score in the first 2 out of 187 problems and then got stumped... x_x

For now, probably the best I can hope for is if I can at least get to understand the solutions found by others

Advertisement

I don't know what level you are at, but I recently did my A levels and used these resources

https://www.youtube.com/user/patrickJMT

https://www.youtube.com/channel/UCEWpbFLzoYGPfuWUMFPSaoA/playlists

The second one is mainly Chem channel but has a lot of Maths as well, just go through relevant playlists

Those looks great and I didn't had found them, so much hidden treasures on youtube :D 

Subscribed and Subscribed :P Thanks!

You say you have problems on a book due to math, then you try to learn all math you can find at once.

That seems too much - learning without a specific problem does not work well for me, i immideatly forget about it.

Instead i narrow down one problem and try to understand the given solution. This way understanding the math happens automatically and i can apply it to anything where it's applicable.

An example is matrix and vector math we use a lot in games. Math background for this is a system of linear equations, but this did not help me to understand why and how this works.

What did work is to look at the geometric nature of those things, and the key is the dot product, example conclusions:

* Using the dot product i can get the 1D coordinate of a 3D point along a 3D direction.

* If i define a space by 3 orthonormal directions (e.g. the typical x,y,z axis), i can get 3 of those 1D coordinates to find the position of my point in this space. With this knowledge i can rotate and translate the point from one space to another like this:

 

struct Space

{

vec3 directionX; vec3 directionY; vec3 directionZ;

vec3 position;

};

 

vec3 localPoint;

localPoint.x = spaceA.directionX.Dot(worldPoint.x - spaceA.position.x);

localPoint.y = spaceA.directionY.Dot(worldPoint.x - spaceA.position.x);

localPoint.z = spaceA.directionZ.Dot(worldPoint.x - spaceA.position.x);

vec3 newWorldPoint;

newWorldPoint = spaceB.position;

newWorldPoint += spaceB.directionX * localPoint.x;

newWorldPoint += spaceB.directionY * localPoint.y;

newWorldPoint += spaceB.directionZ * localPoint.z;

 

This example would make sense for a problem like:

I know the world space positions of a vertex from object A.

I know the transform of Object A.

I want to know what position this vertex would have if it would be attached to another object B (or the same object at different time when its transform has changed.)

 

Do you understand this? If so, you already understand most of how we use 4x4 matrices, or 3x3 matrices for rotation only, or 4x3 matrices. Look at the Space struct and replace the member variable names with an array of 4 times vec3 - you get a 4x3 matrix. The matrix * vector routines in your math lib do the same thing that i wrote above - check yourself.

 

* You can extend this to understend things like transform hierarchies like we use for character skeletons or scene graphs. From the above we know how to do matrix * vector multiplication, and because a matrix is only a number of vectors, we already understand matrix * matrix multiplication too, so nothing new too learn, you just need to imagine and realize. (Visalization is key to grasp this stuff!!! Visualize vectors, points, draw xyz axis with RGB color, etc. It shows you what your code is doing. Debugging by looking at numbers does not work well for geometrics.)

 

Hope this helps - i remember you've had issues with matrices in another thread. (Also notice the above explains how 3D rotations can be applied and how 3D orientation is defined - it's always just a rotated space of xyz axis)

 

 

OUT OF TOPIC: How to format a piece of code? I've used (code) and (/code) with square braces - bit since some time this always deletes anything i've written after the code - better not try again.

For me the problem is not learning a lot of math, the problem is if I find a single thing I cannot understand due to lack of basics, that would lead me to follow a thread of frustration where everything I need to learn to understand the original problem build on something else I don't know which builds on something else I don't know, THAT for me is the "learning all at once" and is bad, while watching all the video on khan academy on a structured/ordered fashion feels just like learning 1 thing all along, since everything is build on top of what was explained before :P

And if working great for me so far :P

This topic is closed to new replies.

Advertisement