/// <summary> /// Localiza un punto en el triangulo utilizando los vectores unitarios (coordenadas trilineales). /// </summary> /// <param name="p">Punto.</param> /// <returns>Parametros u, v.</returns> public double[] Project01(Point3d p) { Vector3d po = (p - this.P0); double u, v, w; Geom3DUtils.Resolve(this.VX, this.VY, this.Normal, po, out u, out v, out w); return(new[] { u, v }); }
/// <summary> /// Evalua la proyeccion del punto sobre el plano, respecto del origen. /// </summary> /// <param name="p">Punto.</param> /// <returns>Parametro [-Inf, Inf].</returns> public double[] Project(Point3d p) { Vector3d diff = (p - this.Origin); double u, v; if (this.IsOrthonormal) { //REAL w = this.Normal.Dot(diff); u = this.DX.Dot(diff); v = this.DY.Dot(diff); } else { double w; Geom3DUtils.Resolve(this.DX, this.DY, this.Normal, diff, out u, out v, out w); } return(new[] { u, v }); }