示例#1
0
        public Vetor PosicaoEm(double tempo)
        {
            const double GRAVIDADE = 9.80665;
            Vetor        g         = new Vetor(0, 0, GRAVIDADE);
            double       t         = tempo - disparadoEm;

            return(canhao + (t * velocidade) - (g * t * t) / 2);
        }
示例#2
0
 public Tiro(Vetor canhao, double anguloAzimute, double anguloElevacao, double disparadoEm)
 {
     this.canhao      = canhao;
     this.disparadoEm = disparadoEm;
     velocidade       = new Vetor(
         Math.Cos(anguloElevacao) * Math.Cos(anguloAzimute),
         Math.Cos(anguloElevacao) * Math.Sin(anguloAzimute),
         Math.Sin(anguloElevacao)) * VELOCIDADEMEDIA;
 }
示例#3
0
        public Vetor PosicaoEm(double elapsed)
        {
            Vetor posicaoAtual = Trajetoria.PosicaoEm(elapsed - tempoTroca);

            if (vaiDesistir && (alvo - posicaoAtual).Mag() < 3000)
            {
                vaiDesistir = false;
                tempoTroca  = elapsed;
                Console.WriteLine("Desistiu de atacar");
                Trajetoria = new Trajetoria3(posicaoAtual, alvo);
            }
            else if (tempoParaTrocarRota > -1 && elapsed > tempoParaTrocarRota)
            {
                tempoParaTrocarRota = -1;
                tempoTroca          = elapsed;
                Console.WriteLine("Trajetoria 1");
                Trajetoria = new Trajetoria1(alvo, posicaoAtual);
            }

            return(Trajetoria.PosicaoEm(elapsed - tempoTroca));
        }
示例#4
0
 public Trajetoria3(Vetor posicaoEntrada, Vetor posicaoSaida)
     : base(posicaoEntrada.SetZ(ALTITUDE), posicaoSaida.SetZ(ALTITUDE))
 {
 }
示例#5
0
 public Trajetoria2(Vetor centro, double anguloEntrada, double anguloExtra)
     : this(centro.To(anguloEntrada, RAIO), centro + (centro - centro.To(anguloEntrada, RAIO)).RotateZ(anguloExtra))
 {
     this.AnguloEntrada = anguloEntrada;
     this.AnguloExtra   = anguloExtra;
 }
示例#6
0
 public Canhao(Vetor posicao)
 {
     Posicao        = posicao;
     TirosRestantes = 4;
     Tiros          = new Tiro[TirosRestantes];
 }
示例#7
0
 public Trajetoria1(Vetor centro, Vetor posicaoEntrada)
     : base(posicaoEntrada.SetZ(ALTITUDE), centro.SetZ(ALTITUDE))
 {
 }
示例#8
0
 public Trajetoria1(Vetor centro, double anguloEntrada)
     : this(centro, centro.To(anguloEntrada, RAIO))
 {
     this.AnguloEntrada = anguloEntrada;
 }
示例#9
0
 protected Trajetoria(Vetor origem, Vetor destino)
 {
     this.Origem  = origem;
     this.Destino = destino;
 }
示例#10
0
 public double AnguloEntre(Vetor v)
 {
     return(Math.Acos((this * v) / (this.Mag() * v.Mag())));
 }
示例#11
0
 public Vetor RotateZ(double angle, Vetor center)
 {
     return((this - center).RotateZ(angle) + center);
 }