Beispiel #1
0
        private static double delta_y(TRPuente puente, double eps)
        {
            double numerador   = eps * (puente.p2.Y - puente.p1.Y);
            double denominador = puente.Longitud;

            return((denominador == 0) ? 0 : numerador / denominador);
        }
Beispiel #2
0
        private static List <TRNode> aux_GetThinPartition(List <TRNode> path, double eps)
        {
            List <TRNode> ext = null;

            if (path != null && path.Count > 0)
            {
                ext = new List <TRNode>();
                ext.Add(path[0]);
                TRNode node_actual = path[0];
                for (int i = 1; i < path.Count; i++)
                {
                    TRPuente puente = new TRPuente(node_actual.Point, path[i].Point);
                    double   dx     = delta_x(puente, eps);
                    double   dy     = delta_y(puente, eps);

                    while (norma(node_actual.Point, path[i].Point) > eps)
                    {
                        TMPoint point_actual = new TMPoint(node_actual.Point.X + dx, node_actual.Point.Y + dy);
                        node_actual = new TRNode(point_actual);
                        ext.Add(node_actual);
                    }

                    ext.Add(new TRNode(path[i].Point));
                    node_actual = path[i];
                }
            }
            return(ext);
        }