public void IncluirRetaNoFinal(Local local) { local.donoGrupo = this.donoGrupo; local.donoAcft = this; if (!locais.Contains(local)) { locais.Add(local); } //if (retas[retas.Count - 1].Fim.X != 0 && retas[retas.Count - 1].Fim.Y != 0) //if (retas[retas.Count - 1].Ini == retas[retas.Count - 1].Fim) if ((retas[retas.Count - 1].Ini.X == retas[retas.Count - 1].Fim.X) && (retas[retas.Count - 1].Ini.Y == retas[retas.Count - 1].Fim.Y)) { retas[retas.Count - 1].Fim = local; this.Trafegar(local); } else { Reta reta = new Reta(); ////reta.Ini = new Local(); //reta.Ini.X = retas[retas.Count - 1].Fim.X; //reta.Ini.Y = retas[retas.Count - 1].Fim.Y; reta.Ini = retas[retas.Count - 1].Fim; reta.Fim = local; retas.Add(reta); } }
private void VerificarTrocarRumo() { Reta retaAtual = retas[indiceRetaAtual]; if (Math.Abs(retaAtual.Fim.X - retaAtual.Ini.X) > Math.Abs(retaAtual.Fim.Y - retaAtual.Ini.Y)) { if (direita) { if (this.X > retaAtual.Fim.X) { this.AtualizarRumo(); } } else if (this.X < retaAtual.Fim.X) { this.AtualizarRumo(); } } else { if (descer) { if (this.Y > retaAtual.Fim.Y) { this.AtualizarRumo(); } } else if (this.Y < retaAtual.Fim.Y) { this.AtualizarRumo(); } } }
private void AtualizarRumo() { if (indiceRetaAtual < retas.Count - 1) { indiceRetaAtual++; Reta retaAtual = retas[indiceRetaAtual]; this.Trafegar(retaAtual.Fim); } else { timer.Enabled = false; } }
public void Mover(int X, int Y) { Reta retaAtual = retas[indiceRetaAtual]; retaAtual.Ini.X = X; retaAtual.Ini.Y = Y; this.X = X; this.Y = Y; //if (acfts[i].timer != null) // acfts[i].timer.Dispose(); if ((retaAtual.Fim.X != 0) && (retaAtual.Fim.Y != 0)) { this.Trafegar(retaAtual.Fim); } this.AtualizarDadosAltitude(); //this.VerificarDistanciaEntreACFTs(10, 200); }
// public void Trafegar(Local local) { Reta retaAtual = retas[indiceRetaAtual]; retaAtual.Ini.X = this.X; retaAtual.Ini.Y = this.Y; retaAtual.Fim = local; espaco = Math.Sqrt(Math.Abs(retaAtual.Fim.X - retaAtual.Ini.X) + Math.Abs(retaAtual.Fim.Y - retaAtual.Ini.Y)); tempo = espaco / Velocidade; //dados da equacao da reta retaAtual.a = retaAtual.Ini.Y - retaAtual.Fim.Y; retaAtual.b = retaAtual.Fim.X - retaAtual.Ini.X; retaAtual.c = (retaAtual.Ini.X * retaAtual.Fim.Y) - (retaAtual.Fim.X * retaAtual.Ini.Y); //------------------------ direita = (retaAtual.Ini.X < retaAtual.Fim.X); descer = (retaAtual.Ini.Y < retaAtual.Fim.Y); if (timer != null) { timer.Dispose(); } timer = new Timer(); timer.Enabled = true; timer.Interval = this.GerarTimer(Velocidade); //timer.Tag = this.Id; timer.Tick -= new EventHandler(timer_Tick); timer.Tick += new EventHandler(timer_Tick); //indiceSelecionado = -1; //this.mudarFundo(Color.White); }
private void timer_Tick(object sender, EventArgs e) { //int i = Int32.Parse((sender as Timer).Tag.ToString()); Reta retaAtual = retas[indiceRetaAtual]; if (Math.Abs(retaAtual.Fim.X - retaAtual.Ini.X) > Math.Abs(retaAtual.Fim.Y - retaAtual.Ini.Y)) { if (direita) { this.X = this.X + this.Incremento; //Int32.Parse(Math.Round(acft.velocidade / 100).ToString()) } else { this.X = this.X - this.Incremento; //Int32.Parse(Math.Round(acft.velocidade / 100).ToString()) } if (retaAtual.b != 0) { this.Y = -(retaAtual.a * this.X + retaAtual.c) / retaAtual.b; } //else // label.BackColor = Color.Red; } else { if (descer) { this.Y = this.Y + this.Incremento; //Int32.Parse(Math.Round(acft.velocidade / 100).ToString()) } else { this.Y = this.Y - this.Incremento; //Int32.Parse(Math.Round(acft.velocidade / 100).ToString()) } if (retaAtual.b != 0) { this.X = -(retaAtual.b * this.Y + retaAtual.c) / retaAtual.a; } //else // label.BackColor = Color.Yellow; } if (piscarFundo) { if (lblMatricula.BackColor == Color.Gray) { lblMatricula.BackColor = Color.White; } else { lblMatricula.BackColor = Color.Gray; } } else { lblMatricula.BackColor = Color.White; } if (piscarFundoAlerta) { if (lblMatricula.BackColor == Color.Yellow) { lblMatricula.BackColor = Color.White; } else { lblMatricula.BackColor = Color.Yellow; } } //preserva a cor de fundo da acft selecionada if (selecionado && lblMatricula.BackColor == Color.White) { lblMatricula.BackColor = Color.Cyan; } this.VerificarTrocarRumo(); this.AtualizarDadosAltitude(); this.listaACFTs_parent.imgCarta.Refresh(); //this.VerificarDistanciaEntreACFTs(10, 200); //distancia = Math.Sqrt(Math.Abs(acft.xFin - acft.xIni) + Math.Abs(acft.yFin - acft.yIni)); }