Maven module :un.api : api-geometry :
Class : un.impl.geometry.s3d.Plane
Extends/Implements : un.impl.geometry.AbstractGeometry un.impl.geometry.s3d.Geometry3D
Subclasses : -

Cuts the universe in 2 half.
Any point 'under' the plane is consider within the plane.
Use Sheet to have a paper thin plane.

TODO Consideration : should this be named HalfUniverse ?

@author Johann Sorel


Variables : -
Functions : Plane, Plane, getNormal, getPoint, getD, getDimension, getBoundingBox, getSurface, getVolume, computeBestFittingPlan, calculateAngle



public void Plane (Vector normal, Vector point)


Build plan from 3 points.
param  a Tuple, not null
param  b Tuple, not null
param  c Tuple, not null
public void Plane (Vector a, Vector b, Vector c)

public Vector getNormal ()


A point on the plane.
public Vector getPoint ()


return  constant of the plane
public double getD ()

public int getDimension ()

public BBox getBoundingBox ()


Plane surface is infinite.
return  infinite
public double getSurface ()


Plane volume is infinite.
return  infinite
public double getVolume ()


Compute the best fitting plane using singular value decomposition.
NOTE JSorel : I'm not a math expert, this needs to be confirmed by a real one.
Resources :
http://en.wikipedia.org/wiki/Singular_value_decomposition
http://stackoverflow.com/questions/9243645/weighted-least-square-fit-a-plane-to-3d-point-set
http://math.stackexchange.com/questions/923851/plane-fitting-using-svd
param  points
return
public Plane computeBestFittingPlan (Tuple[] points)


Calculate the angle made from this plane with the given vector.
param  vector
return  angle in radians
public double calculateAngle (Vector vector)