### Author Topic: Math and graphics  (Read 344 times)

#### Jenova's Witness

• Insane poster
• Posts: 342
• Omnia mutantur, nihil interit
##### Math and graphics
« on: 2011-03-07 21:06:09 »
Could someone recommend me a book (anything I can find and download as a pdf) that explains the math behind user interfaces, rendering maps from tilesheets, moving camera-POV in 2d games in response to keyboard input, stuff like that?

Feel free to recommend any books on math or graphics rendering that helped you when you were learning a programming language, or any books you wish you read when you were learning.

#### Cloudef

• Cool newbie
• Posts: 84
##### Re: Math and graphics
« Reply #1 on: 2011-03-08 11:19:17 »
I din't really use any book.. Only book I've read is about network programming for multiplayer games. There is lots of OpenGL/DX Resources flowing on internet.. Most of them are outdated tho. Many suggest Orange Book for learning modern OGL and it's shaders.

For math's you should learn matrixes and quaternions. I suggest starting with some matrix library tho so you get the hang of it.

#### Jenova's Witness

• Insane poster
• Posts: 342
• Omnia mutantur, nihil interit
##### Re: Math and graphics
« Reply #2 on: 2011-03-08 21:34:18 »
http://queue.acm.org/detail.cfm?id=971590
^Someone recommended this article to me, and I thought I'd share, since you mentioned quaternions.

Quote
For example, most game studios would benefit from the ability to build large continuous 3D world meshes, with multiple artists working on the same mesh at once—or methods of editing triangular meshes to ensure that cracks and holes do not appear.

Quote
Mathematical knowledge. A programmer just isn’t going to be competent in a modern game without a decent grasp of basic linear algebra,4 as well as geometry in 2D and 3D. We often use 4D representations for basic operations (4D homogeneous coordinates for general linear transformations, and the quaternions to represent rotations5) so the ability to reason about higher dimensions is extremely useful. Basic calculus is necessary for all kinds of simulation and rendering tasks. For many rendering tasks, signal-processing mathematics is very important—both linear signal processing6 as well as the murkier study of spherical harmonics.7 For any kind of sophisticated simulation, you’ll want experience with numerical analysis and differential forms. For networking, information theory and the statistics behind compression and cryptography are necessary to build a robust system.
basic linear algebra
geometry in 2D
geometry in 3D
4D homogeneous coordinates for general linear transformations, and the quaternions to represent rotations
Basic calculus
signal-processing mathematics
>linear signal processing
>spherical harmonics
numerical analysis and differential forms
information theory and the statistics behind compression and cryptography

Quote
Algorithmic knowledge. A good engine programmer should have working familiarity with a great many algorithms—so many that attempting to list them here would be silly. The most necessary algorithms perform tasks like spatial partitioning, clustering, and intersection and clipping of geometric primitives. Most algorithms will be mainly focused on one task area, like rendering or physics, but these algorithms are often very deep and take a while to master. For years we have been mining academic research to find and modify appropriate algorithms. However, a game engine must meet soft realtime requirements, and most academic work in the relevant subject areas is geared toward batch computation. (Most of the past research in graphics has applied to offline cinematic rendering. Most physics algorithms are unstable and can fail outright, which is solved in a batch setting by tweaking the initial conditions and trying again. These algorithms do not adapt successfully to a soft realtime setting.) As games are now starting to be taken seriously by the academic community, this is beginning to change, but most academic research is still pointed in directions that don’t do us much good. So, creating a technically ambitious game engine will often require a substantial amount of original research.
algorithms for:
>spatial partitioning
>clustering
>intersection and clipping of geometric primitives