public static Kąty DenormalizujKąty(Kąty a) { // Rzutowanie z przedziału 0.1 .. 0.9 // na przedział 0 .. 180 a.Alfa = (a.Alfa - 0.1) / WspółczynnikSkalowaniaKąta; a.Beta = (a.Beta - 0.1) / WspółczynnikSkalowaniaKąta; return(a); }
public static Kąty NormalizujKąty(Kąty a) { // Rzutowanie z przedziału 0 .. 180 // na przedział 0.1 .. 0.9 a.Alfa = a.Alfa * WspółczynnikSkalowaniaKąta + 0.1; a.Beta = a.Beta * WspółczynnikSkalowaniaKąta + 0.1; return(a); }
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)); }