private double[] PosicaoDaPalmaPrimeiroFrame(Mao mao) { if (mao == null) return PosicaoOrigem(); return mao.PosicaoDaPalma; }
private double[] DistanciaDaMaoEmRelacaoAoPrimeiroFrame(Mao mao, double[] posicaoDaPalmaDaMaoNoPrimeiroFrame) { if (mao == null) return PosicaoOrigem(); return mao.PosicaoDaPalma.Subtrair(posicaoDaPalmaDaMaoNoPrimeiroFrame).Normalizado(); }
private static double[] MontarArrayEsperadoParaAMao(Mao mao) { var direcaoDosDedos = mao.Dedos.Select(d => d.Direcao.Normalizado()).ToArray().Concatenar(); return mao.VetorNormalDaPalma.Normalizado() .Concat(mao.Direcao.Normalizado()) .Concat(AngulosProjetados(mao)) .Concat(direcaoDosDedos) .ToArray(); }
public void criando_uma_mao_com_valores_null() { var mao = new Mao { Dedos = null, Direcao = null, VetorNormalDaPalma = null }; DeveTerOsValoresPadroes(mao); }
private void DeveTerOsValoresPadroes(Mao mao) { mao.Direcao.Should().NotBeNull(); mao.Direcao.Should().HaveCount(3); mao.VetorNormalDaPalma.Should().NotBeNull(); mao.VetorNormalDaPalma.Should().HaveCount(3); mao.Dedos.Should().NotBeNull(); mao.Dedos.Should().HaveCount(5); foreach (var dedo in mao.Dedos) { dedo.Should().NotBeNull(); } }
private static IEnumerable<double> AngulosProjetados(Mao mao) { var angulos = new double[mao.Dedos.Length - 1]; for (int i = 0; i < angulos.Length; i++) { angulos[i] = mao.Dedos[i].PosicaoDaPonta .ProjetadoNoPlano(mao.VetorNormalDaPalma) .AnguloAte(mao.Dedos[i + 1].PosicaoDaPonta.ProjetadoNoPlano(mao.VetorNormalDaPalma)); } return angulos.Normalizado(); }
private static double[] AngulosEntreDedosEPalmaDaMao(Mao mao) { double[] angulos = new double[mao.Dedos.Length]; for (int i = 0; i < angulos.Length; i++) { var posicaoDaPontaDoDedo = mao.Dedos[i].PosicaoDaPonta; var posicaoDaPalma = mao.PosicaoDaPalma; angulos[i] = posicaoDaPontaDoDedo.AnguloAte(posicaoDaPalma); } return angulos; }
private static double[] AngulosEntreDedos(Mao mao) { double[] angulos = new double[mao.Dedos.Length - 1]; for (int i = 0; i < angulos.Length; i++) { var posicaoDaPontaDoDedo1 = mao.Dedos[i].PosicaoDaPonta; var posicaoDaPontaDoDedo2 = mao.Dedos[i + 1].PosicaoDaPonta; angulos[i] = posicaoDaPontaDoDedo1.AnguloAte(posicaoDaPontaDoDedo2); } return angulos; }
public Frame() { MaoEsquerda = new Mao(); MaoDireita = new Mao(); }
public void criando_uma_mao() { var mao = new Mao(); DeveTerOsValoresPadroes(mao); }
public FrameBuilder ParaOIndice(int indice) { maoDireita = new MaoBuilder().ParaOIndice(indice).Construir(); maoEsquerda = new MaoBuilder().ParaOIndice(indice).Construir(); return this; }
public FrameBuilder ComMaosEsquerdaEDireitaPadroes() { maoDireita = new MaoBuilder().Construir(); maoEsquerda = new MaoBuilder().Construir(); return this; }
public FrameBuilder ComMaoDireita(Mao rightMao) { this.maoDireita = rightMao; return this; }
public FrameBuilder ComMaoEsquerda(Mao leftMao) { this.maoEsquerda = leftMao; return this; }