示例#1
0
        public new void Update()
        {
            if ((this.timeToUpdate.IsTimeToAct()) && (this.ponteiroDestino != null))
            {
                double deltaAngulo = angulos.toRadianos(AnguloEntreVetores(this.ponteiroAtual - this.ponteiroCentral, this.ponteiroDestino - this.ponteiroCentral));
                //se os ponteiros atual e destinho não estiverem pertos,
                //continua movimentando o ponteiro atual até chegar perto
                //vetorialmente do vetor destino.
                if ((ponteiroAnterior != null) && (!isSentidoHorarioDeRotacao))
                {
                    ponteiroAnterior = new vetor2(ponteiroAtual);
                    ponteiroAtual    = ponteiroAtual.RotacionaVetor(angulos.toRadianos(+deltaAngulo / 0.5));
                } // if
                else
                {
                    ponteiroAnterior = new vetor2(ponteiroAtual);
                    ponteiroAtual    = ponteiroAtual.RotacionaVetor(angulos.toRadianos(-deltaAngulo / 0.5));
                } // else

                if (vetor2.Distancia(ponteiroAtual, ponteiroDestino) < 1.5)
                {
                    this.PonteiroDirecao = new vetor2(this.ponteiroAtual - this.ponteiroCentral); // guarda a posição e direção na variável de consulta fora do componente.
                }//if
            }// if
        } // Update()
示例#2
0
        } //  AnguloEntreVetores()

        //sentido anti-horário se omega>0
        //sentido horário se omega<0

        private bool IsSentidoHorario(vetor2 v1, vetor2 vdestino)
        {
            vetor2 vSentidoAntiHorario = new vetor2(v1);
            vetor2 vSentidoHorario     = new vetor2(v1);

            vSentidoAntiHorario = vSentidoAntiHorario.RotacionaVetor(+1.0); // sentido anti-horário;

            vSentidoHorario = vSentidoHorario.RotacionaVetor(-1.0);         // sentido horário,

            if (vetor2.Distancia(vSentidoAntiHorario, vdestino) < vetor2.Distancia(vSentidoHorario, vdestino))
            {
                return(false);
            }
            if (vetor2.Distancia(vSentidoAntiHorario, vdestino) < vetor2.Distancia(vSentidoHorario, vdestino))
            {
                return(true);
            }

            return(true);
        } // IsClockWiseRotation()