Namespace std.geom #rem monkeydoc @hidden #end Alias Planef:Plane #rem monkeydoc @hidden #end Struct Plane Field n:Vec3 Field d:T Method New() End Method New( n:Vec3,d:T ) Self.n=n Self.d=d End Method New( p:Vec3,n:Vec3 ) Self.n=n Self.d=-n.Dot( p ) End Method New( v0:Vec3,v1:Vec3,v2:Vec3 ) n=(v1-v0).Cross(v2-v0).Normalize() d=-n.Dot( v0 ) End Operator-:Plane() Return New Plane( -n,-d ) End Method Distance:Double( p:Vec3 ) return n.Dot( p )+d End Method Nearest:Vec3( p:Vec3 ) Return p-n*Distance( p ) End End