public void UpdateElement(int delta, ref NeuralNetworkLSTM net, bool drawlines) { if (playState != 0) { gameTime += playState * delta / 1000.0f; my += dy; } }
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); }