funcoes.cs

Editado em: 26/03/2014
a classe funcoes.cs é referente ao funcionamento base do programa é ele que chamará classes como fotografia.cs, ou servo.cs, etc
 
using System;
using System.Text;

namespace fotografia
{
    internal class Funcoes
    {
        private StringBuilder txt = new StringBuilder();

        private void _MovimentoX(double _valorX)
        {
            txt.AppendLine("X - Movendo servo em x = " + _valorX.ToString());
        }

        private void _MovimentoY(double _valorY)
        {
            txt.AppendLine("Y - Movendo servo em y = " + _valorY.ToString());
        }

        public double[] PosicaoInicialXY { get; set; }

        public double[] PosicaoFinallXY { get; set; }


        public string StartPanorama(IFotografia _ft)
        {
            //calcular diferença entre XY inicial e XY final
            double[] _DifXY = this.DifXY;
            txt.AppendLine("OBS: Diferença XY é.: " + _DifXY[0].ToString() + "," + _DifXY[1].ToString());

            //calcular quantos movimentos tem de X de acordo com CalculoAnguloVisaoH()
            //com o convert.toInt ele arredonda pq não existe meio movimento.
            int _QtdMovimentosX = Math.Abs(Convert.ToInt32(_DifXY[0] / _ft.CalculoAnguloVisaoH()));

            //calcular quantos movimentos tem de Y  de acordo com CalculoAnguloVisaoV()
            int _QtdMovimentosY = Math.Abs(Convert.ToInt32(_DifXY[1] / _ft.CalculoAnguloVisaoV()));

            txt.AppendLine("    Será necessário " + _QtdMovimentosX + " movimentos em X");
            txt.AppendLine("    Será necessário " + _QtdMovimentosY + " movimentos em Y");

            double _AnguloVisaoH = _ft.CalculoAnguloVisaoH();
            double _AnguloVisaoV = _ft.CalculoAnguloVisaoV();
            //movendo XY
            for (int iY = 0; iY < _QtdMovimentosY; iY++)
            {
                for (int iX = 0; iX < _QtdMovimentosX; iX++)//movimentos X
                {
                    _ft.TirarFoto();
                    txt.AppendLine("=> Tirando foto..Click");

                    this._MovimentoX(_AnguloVisaoH); //movendo X
                    
                    if (iX == _QtdMovimentosX -1)
                    {//já rodou tudo na horizontal
                        txt.AppendLine("### Resetando posição X inicial e mudando para linha Y");
                        this._MovimentoX(this.PosicaoInicialXY[0]);
                    }
                }
                if (iY == _QtdMovimentosY - 1)
                {//já deu quantidade de Y exit
                    break;
                }
                this._MovimentoY(_AnguloVisaoV);
            }
            return txt.ToString();
        }

        private double[] DifXY
        {
            get
            {
                return new[] {
                this.PosicaoFinallXY[0] -  this.PosicaoInicialXY[0],
                this.PosicaoFinallXY[1] - this.PosicaoInicialXY[1],
                };
            }
        }
    }
}

Nenhum comentário:

Postar um comentário