Learning Math really from scratch

Started by
13 comments, last by Chirieac 10 years, 6 months ago

Hi,

I am 27 years old and I've decided that it's time for me to learn the math needed for 3D game programming. The problem is that everything seems so overwhelming and I do not know where to start, so and I need your help.

First of all, I would like to know what are the fields (or part of them) that I need to learn in order, from the most basic ones to advanced. While in school, I've just learned for grades and didn't had a higher understanding of it and I think I forgot everything, so I need to start from the basics.

My native language is not English and I have 3 options to learn:

1. Hire a tutor to teach me everything I need to know. Besides that is expensive, I think is hard to find a good university teacher that is willing to teach me everything in my country.

2. Learn from books in my native language. Finding good books in my language is hard and sooner or later I still would have to read English books to learn more specific things about 3D programming. So...

3. Learn from English books. I see myself having good skills for reading English, but learning something like math in a foreign language seems hard. Maybe because I try to translate the English terms in my language.

What do you think? I imagine that it depends on every person and his skills, but what option would you choose?

I'm tempting to choose option #3. I think I need to start from the very bottom in order to get familiar with all the terms in English, like I never learned math in my language. Continuously translating every term in my language really slows me down.

Choosing #3, can you please tell me what are the math fields I need to learn in order? Like, first Pre-Algebra, Algebra I and II, Trignometry and so on.

Also, can you please recommend me some books for each field?

Thanks!

Advertisement
Take a look at khanacademy if you want to start from scratch or even to help you get started in some of the areas. After that it should become easier for you to read the books.

Check out my blog at zwodahs.github.io and zwodahs.itch.io/

Hi,

I am 27 years old and I've decided that it's time for me to learn the math needed for 3D game programming. The problem is that everything seems so overwhelming and I do not know where to start, so and I need your help.

First of all, I would like to know what are the fields (or part of them) that I need to learn in order, from the most basic ones to advanced. While in school, I've just learned for grades and didn't had a higher understanding of it and I think I forgot everything, so I need to start from the basics.

My native language is not English and I have 3 options to learn:

1. Hire a tutor to teach me everything I need to know. Besides that is expensive, I think is hard to find a good university teacher that is willing to teach me everything in my country.

2. Learn from books in my native language. Finding good books in my language is hard and sooner or later I still would have to read English books to learn more specific things about 3D programming. So...

3. Learn from English books. I see myself having good skills for reading English, but learning something like math in a foreign language seems hard. Maybe because I try to translate the English terms in my language.

What do you think? I imagine that it depends on every person and his skills, but what option would you choose?

I'm tempting to choose option #3. I think I need to start from the very bottom in order to get familiar with all the terms in English, like I never learned math in my language. Continuously translating every term in my language really slows me down.

Choosing #3, can you please tell me what are the math fields I need to learn in order? Like, first Pre-Algebra, Algebra I and II, Trignometry and so on.

Also, can you please recommend me some books for each field?

Thanks!

For matrices, start here: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/video-lectures/

For Trig, just remember that sin()/cos()/tan() aren't some magical property, they are functions to evaluate a relationship between angle and length. Taylor series expansions are useful to get your head around, although a little info about differentiation may help first.

The best approach imho, is to get a unit test library (googletest is a good one), and start building your own maths lib from scratch (no cheating by looking code up online!). Test everything until you are certain it works properly.

If you figure out things like 'rotateVectorByQuat', you'll probably figure out how to convert from a quat to a matrix on your own. Especially if you start thinking about a 3x3 matrix like so:

[source]

struct Matrix

{

Vector3 x;

Vector3 y;

Vector3 z;

};[/source]

The main thing you need to learn is linear algebra (vectors and matrices). You don't really need much trigonometry if you learned linear algebra well. And I wouldn't think of Taylor series or differentiation for a while.

When I search the web for "linear algebra course online", the first three hits are an open course from MIT, a free text book and series of videos from Khan Academy. All three sound like great resources.

You can always ask questions here if you have trouble with the material, or you can PM me and I'll be happy to help you.

You say you studied for grades in school. What is your goal this time, to study only enough maths so you can do the programming you're thinking of right now, or to actually gain that luscious deeper understanding and have a larger set of mathematical tools to choose from in the future?

The best way of learning depends of course on who you are, but having a printed book is hard to beat. As has been mentioned, there are loads of really nice free video lectures online as complementary material, have a look. And considering the level of English in your post, I'd say maths books at the level you're interested in shouldn't be a problem. As always, there's no magic book to open the doors for you, just grab whatever you can find at the local library and have fun. Search for natural science programs in high schools and universities and see in what order they teach maths and go by that. Keep programming and try to find ways to apply what you're learning, and eventually you'll do just that with linear algebra.

Also, don't skip too many parts, thinking they are not relevant to rotating a 3D object. Maths is wonderfully intertwined, and starting with a strong foundation, new things in maths will be "obvious" rather some something you need to cram or constantly look up (i.e. "the reason for this expression is this, so the answer to my question is that" vs "was it this or that, wikipedia help!").

That's what I did, and what I'd do again...


My native language is not English

Wouldn't it be better to tell us what your native language is, in case someone knows of good resources in that language? However, I agree with hanstt that you shouldn't have any problems reading math books in English. I can read math books in English, Portuguese, French and probably Italian, and I don't even speak the last two (but they are close to Spanish, which is my native language).

learn the math needed for 3D game programming.

My suggestion is just go ahead with actually learning programming and figure it out as you go. Try it. If you've done anything in 3D I'm sure you can begin to understand x,y,z axis move on from there. You can even learn vectors and some of their methods with 2D vectors first and that's what they often do in school as well.

They are actually reworking the math lessons in my country to shift towards teaching math with virtual game application in mind. That is by far more motivating than dealing with abstract concepts such as vectors and matrices. Make that into player position and orientation and suddenly everyone is interested.

What better motivation to learn to understand something than the fact that it's standing between you and your game as you're developing it? :)

Thanks for your replies!

My native language is Romanian.

My goal I think is to learn the needed math for 3D game programming, but not really just enough. I'm not interested in only the bare minimum, learning just the specifics. I do want to have a deeper understanding.

In terms of education, the high school is my highest one, an art school where I've studied artistic drawing and architecture. The education stopped there.

Currently I'm working as a web developer and my first programming language learned by myself was C++.

The free videos seems good and I will watch them, but I still want to learn from books also.

From what I've found, I think I should first learn Algebra I and II, than maybe some Geometry and Trigonometry. The Linear Algebra, Pre-Calculus and Calculus I do not know when to learn them and in what order.

With so many books on amazon I'm not sure what to get.

I'm not looking for magic books and neither do I want to skip many parts.

Whenever anyone starts off by saying that English isn't their native language, they then seem to write with better spelling/grammar than most native English speakers! Maybe the terms are difficult because they're new maths concepts rather than foreign words? I don't relate terms like differentiation, cross product or determinant to anything else in real life - their only meaning is mathematical to me.

Anyway, basic algebra, trigonometry, vectors and matrices are all good things to know about. Calculus may also be relevant, depending on what you choose to do. I find Wikipedia is a good first reference for maths concepts I'm not familiar with.

Euclidean geometry from scratch ;)

http://upload.wikimedia.org/wikipedia/commons/8/8d/P._Oxy._I_29.jpg

My way is to use academic books on math in the native language

(some basic concepts) and then switch to English literature (details, application issues).

Do not concern on the "programming for 3D" books, rather than try to find scripts on the

linear algebra (vectors, matrices, imaginary numbers, quaternions) and maybe on some

differential calculus but in the field of numerical methods (more applicative than pure

mathematics).

This topic is closed to new replies.

Advertisement