// Last edited on 2000-09-01 04:49:06 by stolfi import java.awt.Rectangle; import java.util.Vector; import java.lang.Math; import Ponto; import Retangulo; import Trecho; import Servico; import Esquina; import Planta; public class LocalizadorImpl extends Localizador { private Planta planta; public LocalizadorImpl(Planta pl) { this.planta = pl; } public Trecho trechoMaisProximo(Ponto p) { Trecho[] t = planta.trechos(); Trecho minTrecho = null; double minDist = Double.MAX_VALUE; for (int i = 0; i < t.length; i++) { double dist = t[i].distancia(p); if (dist < minDist) { minDist = dist; minTrecho = t[i]; } } return(minTrecho); } public Servico servicoMaisProximo(Ponto p) { Servico[] s = planta.servicos(); Servico minServico = null; double minDist = Double.MAX_VALUE; for (int i = 0; i < s.length; i++) { double dist = s[i].distancia(p); if (dist < minDist) { minDist = dist; minServico = s[i]; } } return(minServico); } public Trecho[] todosTrechosDentro(Retangulo r) { Trecho[] t = planta.trechos(); Vector v = new Vector(); for (int i = 0; i < t.length; i++) { if (t[i].intercepta(r)) { v.addElement(t[i]); } } int n = v.size(); Trecho[] ret = new Trecho[n]; for (int i = 0; i < n; i++) { ret[i] = (Trecho) v.elementAt(i); } return ret; } public Servico[] todosServicosDentro(Retangulo r) { Servico[] s = planta.servicos(); Vector v = new Vector(); for (int i = 0; i < s.length; i++) { if (s[i].intercepta(r)) { v.addElement(s[i]); } } int n = v.size(); Servico[] ret = new Servico[n]; for (int i = 0; i < n; i++) { ret[i] = (Servico) v.elementAt(i); } return ret; } public Esquina[] todasEsquinasDentro(Retangulo r) { Esquina[] e = planta.esquinas(); Vector v = new Vector(); for (int i = 0; i < e.length; i++) { if (e[i].intercepta(r)) { v.addElement(e[i]); } } int n = v.size(); Esquina[] ret = new Esquina[n]; for (int i = 0; i < n; i++) { ret[i] = (Esquina) v.elementAt(i); } return ret; } }