public interface ComandosDoControle { public static final double ACEL_MAX = +3.0; // metros por segundo ao quadrado public static final double ACEL_MIN = -10.0; // metros por segundo ao quadrado /** Envia um comando de aceleração para um determinado veículo */ public double setAceleracao(long chassi, double acel); /** Programa um comando de aceleração para um determinado instante no futuro (em ms) */ public EventoCentralComunicacao setAceleracao(long chassi, double acel, long quando); /** desprograma um comando de aceleração para o futuro */ public boolean removeEvent(EventoCentralComunicacao evento); /** Obtem os últimos dados enviados de cada veículo que ainda se encontra no perímetro */ public PosicaoAtitude[][] getStatus(); /** Obtem os últimos dados enviados de cada veículo que ainda se encontra no perímetro e sincroniza esses dados com o instante de tempo atual */ public PosicaoAtitude[][] getStatusAtualizado(); /** Muda o período de execução da função ciclo da estratégia de controle */ public int setCiclo(int ciclo); /** Obtem o valor do periodo do controlador */ public int getCiclo(); /** Obtem a hora atual */ public long getHora(); } public class PosicaoAtitude { public double pos; // posicao do carro em metros public double vel; // velocidade do carro em metros por segundo public double acel; // aceleracao do carro em metros por segundo ao quadrado public char via; // via deste carro public long chassi; // identificação deste carro public long tempo; // tempo para o qual essas medidas sao validas public double velMax; // Velocidade máxima desse veículo } public class Geometria { /** Margem é a distancia após o cruzamento */ public int getMargemViaH(){ return margemViaH; } public int getMargemViaV(){ return margemViaV; } public int getLarguraViaH(){ return larguraViaH; } public int getLarguraViaV(){ return larguraViaV; } public int getPerimetroH(){ return perimetroH; } public int getPerimetroV(){ return perimetroV; } public int getLarguraCarro(){ return larguraCarro; } public int getComprimentoCarro(){ return comprimentoCarro; } public int getTotalH(){ return perimetroH + larguraViaV + margemViaV; } public int getTotalV(){ return perimetroV + larguraViaH + margemViaH; } }