示例#1
0
文件: Recta.cs 项目: JBPKII/PRUSA3D
        public Segmento Equidista(double Equidistancia)
        {
            //Equidistancia > 0 => equidisa hacia la izquierda

            Punto V1 = new Punto(this.Inicio.X,
                                 this.Inicio.Y,
                                 0.0);//2D
            Punto V2 = new Punto(this.Final.X,
                                 this.Final.Y,
                                 0.0);//2D

            Punto V = new Punto(V2.X - V1.X,
                                V2.Y - V1.Y,
                                0.0);//2D
            double Vd = V1.Distancia(V2);

            if (Vd == 0.0)
            {
                //Punto inicial y final son el mismo
                return(this);
            }
            else
            {
                //vector unitario
                Punto v = new Punto(V.X / Vd,
                                    V.Y / Vd,
                                    0.0);

                //vector equidistancia perpendicular
                Punto u = new Punto(-v.Y * Equidistancia,
                                    v.X * Equidistancia,
                                    0.0);

                Segmento Res = new Segmento(
                    new Punto(this.Inicio.X + u.X, this.Inicio.Y + u.Y, this.Inicio.Z + u.Z),
                    new Punto(this.Final.X + u.X, this.Final.Y + u.Y, this.Final.Z + u.Z));

                return(Res);
            }
        }