Why are polygons typically triangulated in computer graphics?

  • Thread starter Thread starter Synthetix
  • Start date Start date
  • Tags Tags
    Geometry
Click For Summary
Polygons are typically triangulated in computer graphics because triangles are the simplest closed shapes that can define a plane, allowing for efficient rendering and optimization by graphics hardware. Triangles enable parallel processing due to their uniform structure, which is not as easily achievable with other polygon types like quadrilaterals. While higher polygons can be used, they introduce complexity and potential rendering issues, making triangles the preferred choice in most applications. The mathematical properties of triangles, particularly in trigonometry, facilitate easier calculations for operations like shading and rasterization. Overall, the use of triangles enhances accuracy and performance in 3D graphics.
Synthetix
Messages
5
Reaction score
0
Hello, I just have a basic geometry question (really within the context of computer graphics). What is the significance in triangulating polygons? Why not squares, or polys with more angles? Why triangles? Is that because it is the simplest representation of a closed area? Also, is it due to trigonometric functions being able to operate on triangles? Are there similar functions in mathematics for rectangles, etc? I never took geometry in school, so now that I'm working with 3D graphics these questions are on the brain!
 
Physics news on Phys.org
The Sega Saturn used quadrilaterals as primitives. Any polygon triangle or higher can be used. Any polygon can be broken into triangles. There is potential in using higher polygons, but it also caused problems because triangles are the standard much of the hardware and software is optimized for them. Often when evaluating the tradeoffs it is better to just use more triangles.
 
Hey Synthetix and welcome to the forums.

The main advantage is they form a plane (minimum to form one) and you can do them in parallel with the right hardware design (and algorithms).

The way graphics cards are setup nowadays, you have a vertex pipeline and a fragment pipe-line.

With triangles, these are well understood and the card can be optimized to do them per triangle since it is uniform for all triangles but not necessarily for other non-parametric primitives (like quadrilaterals).
 
Thanks for the replies. I wasn't aware that the Saturn used quads as primitives. I read the Wikipedia entry on it and was surprised to see that triangular surfaces required the fourth edge to be a length of zero! That's just wacky, especially when we're so used to triangles. And texturing must be a real challenge in this case!

What about it terms of geometry (math) in general? Clearly, trigonometry operates on triangles, but are there similar mathematical functions that operate on other polygons? I haven't come across any computer graphics math from what I can recall that would be specific to anything more than a triangle or quad.
 
Last edited:
Are you familiar with how triangles are rasterized (i.e textured) in terms of the technique?
 
chiro said:
Are you familiar with how triangles are rasterized (i.e textured) in terms of the technique?

I'm familiar with it, although I don't completely understand all of the math involved. I use a Phong shader written in GLSL as part of the fragment program. I send the coordinates (vectors) of the lights, along with the vectors for each point in 3D. The shader seems to sort this all out, resulting in a nicely Phong-rendered scene.

I've recently tried to take on shadow mapping, and although I am getting a "result," it is not correct. How the fragment shader takes coordinates from lights and objects and rasterizes shadows is beyond me at the moment. I've of course used a lot of code taken from forums, etc., but again I really don't understand how the math is working (it's more of a "try this, oops, that doesn't work, try something else" approach).

That's why I've decided I need to understand the math better, not just "paste this code and see if it works." :smile:
 
The basic texturing method involves interpolation.

You do is do a line by line scan of the triangle raster by associating the texture co-ordinates with the end-points of the triangle.

You then do a horizontal line scan and interpolate across each line for the texels (texture element) and that location on the screen buffer becomes the texel.

So in short, you do a series of horizontal line scans and each line retrieves the texels for that line and dumps that in the screen buffer which is what you see.
 
Three points are the smallest number of points to define a plane, as chiro said.

Furthermore, any more points, and you have to CHECK they all fall on the same plane. Three points always define a triangle, but four points don't always form a quadrilateral!

Triangles are also a "finer" structure. If you're approximating a sphere with triangles, you will get a much more accurate result if you're using triangles instead of quads (given the same number of points).

Three ordered points also gives you a very fast way to take the normal of the triangle's plane. If your tri has coordinates(p0, p1, p2), then simply take the cross product of (p1 - p0) x (p2 - p1), and normalize it.
 

Similar threads

Replies
5
Views
3K
Replies
2
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
Replies
1
Views
2K
  • · Replies 40 ·
2
Replies
40
Views
5K
Replies
29
Views
5K
  • · Replies 13 ·
Replies
13
Views
3K
  • · Replies 29 ·
Replies
29
Views
7K
  • Poll Poll
  • · Replies 2 ·
Replies
2
Views
7K
Replies
22
Views
4K