private void MoveArms(Point p) { RękaRobota ręka = alg.DajOdpowiedź(p); //Debug.WriteLine("ręka: {0}, {1}, {2}, {3}", ręka.Łokieć.X, ręka.Łokieć.Y, ręka.Dłoń.X, ręka.Dłoń.Y); vm.Łokieć = ręka.Łokieć; vm.Dłoń = ręka.Dłoń; }
public PrzykładUczący() { Kąty = new Kąty(Globals.Random.NextDouble() * 180, Globals.Random.NextDouble() * 180); RękaRobota ręka = RękaRobota.ZamieńKątyNaRękęRobota(Kąty); Punkt = ręka.Dłoń; Punkt = NormalizujPunkt(Punkt); Kąty = NormalizujKąty(Kąty); }
public static RękaRobota ZamieńKątyNaRękęRobota(Kąty kąty) { RękaRobota arm = new RękaRobota(); kąty.Alfa = kąty.Alfa * Math.PI / 180; kąty.Beta = kąty.Beta * Math.PI / 180; kąty.Alfa -= Math.PI / 2; kąty.Beta = kąty.Alfa + kąty.Beta - Math.PI; arm.Łokieć = new Point((int)Math.Round(Bark.X + Math.Cos(kąty.Alfa) * Globals.DługośćRamienia), (int)Math.Round(Bark.Y + Math.Sin(kąty.Alfa) * Globals.DługośćRamienia)); arm.Dłoń = new Point((int)Math.Round(arm.Łokieć.X + Math.Cos(kąty.Beta) * Globals.DługośćRamienia), (int)Math.Round(arm.Łokieć.Y + Math.Sin(kąty.Beta) * Globals.DługośćRamienia)); return(arm); }
internal RękaRobota DajOdpowiedź(Point p) { var znormalizowany = PrzykładUczący.NormalizujPunkt(p); //Debug.WriteLine("punkt na wejściu: {0}, {1}", p.X, p.Y); int Ostatnia = Warstwy.Count - 1; double[] x = new double[] { znormalizowany.X, znormalizowany.Y, 1 }; PrzebiegajWprzód(x); Kąty kąty = new Kąty(Warstwy[Ostatnia][0].Wyjście, Warstwy[Ostatnia][1].Wyjście); Debug.WriteLine("wynik: {0}, {1}", kąty.Alfa.ToString(), kąty.Beta.ToString()); var zdenormalizowane = PrzykładUczący.DenormalizujKąty(kąty); //Debug.WriteLine("wynik: {0}, {1}", kąty.Alfa.ToString(), kąty.Beta.ToString()); return(RękaRobota.ZamieńKątyNaRękęRobota(zdenormalizowane)); }