Ejemplo n.º 1
0
        /// <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 });
        }
Ejemplo n.º 2
0
        /// <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 });
        }