private void DarstellungQuerkräfte(int zeitIndex)
        {
            // Bestimmung der maximalen Querkraft
            IEnumerable <AbstraktBalken> Beams()
            {
                foreach (var item in modell.Elemente)
                {
                    if (!(item.Value is AbstraktBalken element))
                    {
                        continue;
                    }
                    yield return(element);
                }
            }

            maxQuerkraftZeit = 0;
            foreach (var element in Beams())
            {
                element.ElementState = element.ComputeElementState();
                if (element.ElementState.Length <= 2)
                {
                    continue;
                }
                if (Math.Abs(element.ElementState[1]) > maxQuerkraft)
                {
                    maxQuerkraft = Math.Abs(element.ElementState[1]);
                }
                if (Math.Abs(element.ElementState[4]) > maxQuerkraft)
                {
                    maxQuerkraft = Math.Abs(element.ElementState[4]);
                }
            }

            // Querkraftdarstellung für alle Biegebalken zeichnen
            foreach (var element in Beams())
            {
                if (element.ElementState.Length <= 2 || maxQuerkraft == 0)
                {
                    continue;
                }
                darstellung.Querkraft_Zeichnen(element, maxQuerkraft, false);
            }
            var zeit    = zeitIndex * dt;
            var maxText = "maximale absolute Querkraft = " + maxQuerkraftZeit.ToString("N0") + " nach Zeit = " + zeit.ToString("N2");

            MaximalwertAnZeitschritt(maxText);
        }
        private void BtnQuerkraft_Click(object sender, RoutedEventArgs e)
        {
            double maxQuerkraft = 0;

            if (normalkräfteAn)
            {
                foreach (Shape path in darstellung.NormalkraftListe)
                {
                    VisualErgebnisse.Children.Remove(path);
                }
                normalkräfteAn = false;
            }
            if (momenteAn)
            {
                foreach (Shape path in darstellung.MomenteListe)
                {
                    VisualErgebnisse.Children.Remove(path);
                }
                VisualErgebnisse.Children.Remove(darstellung.maxMomentText);
                momenteAn = false;
            }
            if (!querkräfteAn)
            {
                bool elementlast;
                // Bestimmung der maximalen Querkraft
                IEnumerable <AbstraktBalken> Beams()
                {
                    foreach (KeyValuePair <string, AbstraktElement> item in modell.Elemente)
                    {
                        if (item.Value is AbstraktBalken beam)
                        {
                            yield return(beam);
                        }
                    }
                }

                foreach (var beam in Beams())
                {
                    beam.ElementState = beam.ComputeElementState();
                    if (beam.ElementState.Length <= 2)
                    {
                        continue;
                    }
                    if (Math.Abs(beam.ElementState[1]) > maxQuerkraft)
                    {
                        maxQuerkraft = Math.Abs(beam.ElementState[1]);
                    }
                    if (Math.Abs(beam.ElementState[4]) > maxQuerkraft)
                    {
                        maxQuerkraft = Math.Abs(beam.ElementState[4]);
                    }
                }

                // skalierte Querkraftverläufe zeichnen
                foreach (var beam in Beams())
                {
                    elementlast       = false;
                    beam.ElementState = beam.ComputeElementState();
                    if (beam.ElementState.Length <= 2)
                    {
                        continue;
                    }
                    if (Math.Abs(beam.ElementState[1] + beam.ElementState[4]) > double.Epsilon)
                    {
                        elementlast = true;
                    }
                    darstellung.Querkraft_Zeichnen(beam, maxQuerkraft, elementlast);
                }
                querkräfteAn = true;
            }
            else
            {
                foreach (Shape path in darstellung.QuerkraftListe)
                {
                    VisualErgebnisse.Children.Remove(path);
                }
                querkräfteAn = false;
            }
        }