9
$\begingroup$

What are degenerate polygons? How does one check whether a given pair of polygons is degenerate or not?

$\endgroup$
  • 2
    $\begingroup$ Context? I don't believe "degenerate polygon" has a standard definition. $\endgroup$ – Peter Shor Jun 8 '13 at 2:36
  • $\begingroup$ If I have two convex polygons, how what would be degenerate ? if they share a common side or if they overlap? or none? or both? $\endgroup$ – Alice Jun 8 '13 at 2:42
  • 1
    $\begingroup$ My guess is that these are polygons in which two adjacent vertices are the same. $\endgroup$ – Yuval Filmus Jun 8 '13 at 5:52
9
$\begingroup$

A polygon is degenerate if some of its vertices lie on each other. e.g the triangle (0,0),(0,1),(0,0) is degenerate. It has 3 sides, and 3 vertices, but two of vertices repeat. It's possible to repeat a vertex multiple times (for example (0,0),(0,0),(0,0) is another degenerate triangle). By definition, checking whether a polygon is degenerate or not is easy.

But what are the uses of degenerate polygons? One application from graphic acceleration (3D drawing) is as follows:

In 3D drawing GPUs normally use triangulation to render images. The (simple) reason for using triangles is because they are simplest possible 2D objects so don't need much hardware.

If we want to draw a complex 3D image, by this GPU limitation, we have to decompose it into multiple triangles. But if we call the GPU to render each triangle separately, it would be very slow (because of the number of calls). So the triangle strip is used to reduce the number of calls to the GPU. A good explanation of triangle strips can be found on Microsoft Documentation: Triangle Strips, also you can see the wiki for: Triangle Strip.

But the problem arises when we want to draw two separate objects in one strip. In this case degenerate triangles help. The GPU can detect the degenerate triangles and skip their drawing. So we can connect two separate strips with one degenerate triangle.

In general if we have $n$ different components, such that we already have their corresponding triangle strips, we can draw them all by just one call to the GPU. This causes to extra memory usage, but it is a trade off between the number of calls to the GPU for rendering and the overhead of using an extra, degenerate triangle.

$\endgroup$
  • $\begingroup$ Could you clarify if degenerate means only adjacent equal vertices, or if the definition includes non-adjacent equal vertices? (A sincere question—not just trying to improve answer) $\endgroup$ – Erik Hermansen Mar 15 '18 at 14:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.