Newell's algorithm

From Wikipedia, the free encyclopedia
Revision as of 01:20, 8 May 2023 by imported>Ohhidan (grammar)
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Newell's Algorithm is a 3D computer graphics procedure for elimination of polygon cycles in the depth sorting required in hidden surface removal. It was proposed in 1972 by brothers Martin Newell and Dick Newell, and Tom Sancha, while all three were working at CADCentre.

In the depth sorting phase of hidden surface removal, if two polygons have no overlapping extents or extreme minimum and maximum values in the x, y, and z directions, then they can be easily sorted. If two polygons, Template:Var and Template:Var, do have overlapping extents in the Z direction, then it is possible that cutting is necessary.

File:Painters problem.png
Cyclic polygons must be eliminated to correctly sort them by depth

In that case, Newell's algorithm tests the following:

  1. Test for Z overlap; implied in the selection of the face Template:Var from the sort list
  2. The extreme coordinate values in X of the two faces do not overlap (minimax test in X)
  3. The extreme coordinate values in Y of the two faces do not overlap (minimax test in Y)
  4. All vertices of P lie deeper than the plane of Template:Var
  5. All vertices of Q lie closer to the viewpoint than the plane of Template:Var
  6. The rasterisation of Template:Var and Template:Var do not overlap

The tests are given in order of increasing computational difficulty. The polygons must be planar. If the tests are all false, then switch the order of Template:Var and Template:Var in the sort, record having done so, and try again. If there is an attempt to switch the order of a polygon a second time, there is a visibility cycle, and the polygons must be split. Splitting is accomplished by selecting one polygon and cutting it along the line of intersection with the other polygon. The above tests are again performed, and the algorithm continues until all polygons pass the above tests.

References

  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..

See also

Template:Asbox