Exemplo n.º 1
0
 public void UpdateElement(int delta, ref NeuralNetworkLSTM net, bool drawlines)
 {
     if (playState != 0)
     {
         gameTime += playState * delta / 1000.0f;
         my       += dy;
     }
 }
Exemplo n.º 2
0
        public void DrawElement(Graphics g, NeuralNetworkLSTM net, bool drawlines, bool linesdynamic, bool heatMap)
        {
            if (net.nodes != null)
            {
                Array.Copy(net.GetNodes(Index), members, membersCount);
            }
            heatMapRender = heatMap && Index != 0 && Index != Count - 1;
            if (drawlines && Index < net.Size - 1 && net.nodes != null)
            {
                Pen    p        = Pens.Red;
                double el_min   = -1;
                double el_range = -1;
                if (linesdynamic)
                {
                    if (heatMap)
                    {
                        CalcHeatMapRange(false, false);
                        el_min   = pmin;
                        el_range = pmax - el_min + 0.001;
                    }
                    else
                    {
                        el_min   = members.Min();
                        el_range = members.Max() - el_min + 0.001;
                    }
                }
                el_range *= 1.5;
                el_min   -= el_range * 0.25;

                for (int i = 0; i < membersCount; i++)
                {
                    double[] lines  = net.GetAxons(Index, i);
                    double   min    = lines.Min();
                    double   range  = lines.Max() - min + 0.001;
                    double   el_val = -1;
                    if (linesdynamic)
                    {
                        if (heatMap)
                        {
                            el_val = Math.Min(1, Math.Max(0, ((members[i] - pmembers[i]) - el_min) / el_range));
                        }
                        else
                        {
                            el_val = Math.Min(1, Math.Max(0, (members[i] - el_min) / el_range));
                        }
                    }

                    for (int ii = 0; ii < lines.Length; ii++)
                    {
                        if (lines[ii] > 0)
                        {
                            p = new Pen(Color.FromArgb(
                                            (int)(255 * (linesdynamic ? el_val : 1) * (lines[ii] - min) / range),
                                            255, 115, 50));
                        }
                        else
                        {
                            p = new Pen(Color.FromArgb(
                                            (int)(255 * (linesdynamic ? el_val : 1) * (lines[ii] - min) / range)
                                            , 50, 110, 255));
                        }
                        g.DrawLine(p, GetNodePosition(i), net.nodes[Index + 1].GetNodePosition(ii));
                    }
                }
            }
            DrawElement(g);
            Array.Copy(members, pmembers, membersCount);
        }