public static Aplicador extraerAplicador(string[] fid, int lineaInicio) { int indNombre = Extraer.buscarSubStringEnFid(fid, "Points: ", lineaInicio); int finTotal = Array.IndexOf(fid, "", lineaInicio); Aplicador aplicador = new Aplicador() { nombre = (fid[indNombre].Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries))[1], fuentes = new List <Fuente>(), }; int inicio = indNombre + 2; int fin = Extraer.buscarSubStringEnFid(fid, "Points: ", inicio) - 1; if (fin == -1) { fin = finTotal - 1; } for (int i = inicio; i < fin + 1; i++) { string aux = fid[i]; string[] partes = aux.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); Fuente fuente = Fuente.extraer(partes); aplicador.fuentes.Add(fuente); } aplicador.numeroFuentes = aplicador.fuentes.Count(); return(aplicador); }
public static double tasaDosisPuntoFuente(Aplicador ap, Fuente f, PuntoDosis p, TablaHyT tabla) { double H = paramH(ap, f, p); double T = paramT(ap, f, p); return(tasaDosisHT(H, T, tabla)); }
public static Fuente extraer(string[] partes) { Fuente fuente = new Fuente() { posicion = new Vector() { x = Convert.ToDouble(partes[0]), y = Convert.ToDouble(partes[1]), z = Convert.ToDouble(partes[2]), }, tiempo = Convert.ToDouble(partes[5]), //tiempo }; return(fuente); }
public static Vector dF(Aplicador aplicador, Fuente fuente) { Vector directorFuente = new Vector(); int indiceFuente = aplicador.fuentes.IndexOf(fuente); if (indiceFuente == 0) { directorFuente = difEntreFuentes(aplicador.fuentes[indiceFuente], aplicador.fuentes[indiceFuente + 1]); } else if (indiceFuente == aplicador.fuentes.Count() - 1) { directorFuente = difEntreFuentes(aplicador.fuentes[indiceFuente - 1], aplicador.fuentes[indiceFuente]); } else { Vector director1 = difEntreFuentes(aplicador.fuentes[indiceFuente], aplicador.fuentes[indiceFuente + 1]); Vector director2 = difEntreFuentes(aplicador.fuentes[indiceFuente - 1], aplicador.fuentes[indiceFuente]); directorFuente = Vector.promedio(director1, director2); } return(directorFuente); }
public static double paramH(Aplicador ap, Fuente f, PuntoDosis p) { return(Math.Sqrt(Math.Pow(distanciaFuentePunto(f, p), 2) - Math.Pow(paramT(ap, f, p), 2))); }
public static double paramT(Aplicador ap, Fuente f, PuntoDosis p) { return(Vector.productoEscalar(vectorDistanciaFuentePunto(f, p), directorFuente(ap, f))); }
public static Vector difEntreFuentes(Fuente p1, Fuente p2) { return(Vector.resta(p1.posicion, p2.posicion)); }
public static double dosisPuntoFuente(Aplicador ap, Fuente f, PuntoDosis p, TablaHyT tabla) { return(tasaDosisPuntoFuente(ap, f, p, tabla) * f.tiempo * tabla.factor); }
public static double distanciaFuentePunto(Fuente f, PuntoDosis p) { return(Vector.modulo(vectorDistanciaFuentePunto(f, p))); }
public static Vector vectorDistanciaFuentePunto(Fuente f, PuntoDosis p) { return(Vector.resta(p.posicion, f.posicion)); }