A 3d floating point arithmetic orientation predicate.

Namespace:  ceometric.ComputationalGeometry
Assembly:  ceometric.ComputationalGeometry (in ceometric.ComputationalGeometry.dll) Version: (


public static double Orient3d(
	Point pa,
	Point pb,
	Point pc,
	Point point
Visual Basic (Declaration)
Public Shared Function Orient3d ( _
	pa As Point, _
	pb As Point, _
	pc As Point, _
	point As Point _
) As Double
Visual C++
static double Orient3d(
	Point^ pa, 
	Point^ pb, 
	Point^ pc, 
	Point^ point


Type: ceometric.VectorGeometry..::.Point
A first point on a plane.
Type: ceometric.VectorGeometry..::.Point
A second point on a plane.
Type: ceometric.VectorGeometry..::.Point
A third point on a plane.
Type: ceometric.VectorGeometry..::.Point
A point above, on or below the plane.

Return Value

Given a point lies 'above' a plane if pa, pb and pc appear in counterclockwise order when viewed from above the plane and a point lies 'below' a plane if pa, pb and pc appear in clockwise order when viewed from below the plane, this predicate is
  • positive if point lies below the plane.
  • zero if point lies on the plane.
  • negative if point lies above the plane.


Due to floating point arithmetic, this predicate is not is not reliable for near-degenerate cases.

See Also