public static double[] ComputeLoadVector(AbstraktElementLast ael, bool inElementCoordinateSystem) { if (ael == null) { throw new ArgumentNullException(nameof(ael)); } throw new ModellAusnahme("Fachwerkelement kann keine interne Last aufnehmen! Benutze Biegebalken mit Gelenk"); }
private PathGeometry LinienlastZeichnen(AbstraktElementLast last) { var linienlast = (LinienLast)last; var pathGeometry = new PathGeometry(); var pathFigure = new PathFigure(); const int lastPfeilGroesse = 8; const int linienkraftÜberhöhung = 1; var linienLastAuflösung = linienkraftÜberhöhung * lastAuflösung; last.SetReferences(modell); if (modell.Elemente.TryGetValue(linienlast.ElementId, out var element)) { } if (element == null) { return(pathGeometry); } if (modell.Knoten.TryGetValue(element.NodeIds[0], out var startKnoten)) { } var startPunkt = TransformKnoten(startKnoten, auflösung, maxY); // zweiter Elementknoten if (modell.Knoten.TryGetValue(element.NodeIds[1], out var endKnoten)) { } var endPunkt = TransformKnoten(endKnoten, auflösung, maxY); var vector = endPunkt - startPunkt; pathFigure.StartPoint = startPunkt; var lastVektor = RotateVectorScreen(vector, -90); lastVektor.Normalize(); var vec = lastVektor * linienLastAuflösung * linienlast.Intensity[1]; var nextPunkt = new Point(startPunkt.X - vec.X, startPunkt.Y - vec.Y); lastVektor *= lastPfeilGroesse; lastVektor = RotateVectorScreen(lastVektor, -150); var punkt = new Point(startPunkt.X - lastVektor.X, startPunkt.Y - lastVektor.Y); pathFigure.Segments.Add(new LineSegment(punkt, true)); lastVektor = RotateVectorScreen(lastVektor, -60); punkt = new Point(startPunkt.X - lastVektor.X, startPunkt.Y - lastVektor.Y); pathFigure.Segments.Add(new LineSegment(punkt, false)); pathFigure.Segments.Add(new LineSegment(startPunkt, true)); pathFigure.Segments.Add(new LineSegment(nextPunkt, true)); lastVektor = RotateVectorScreen(vector, 90); lastVektor.Normalize(); vec = lastVektor * linienLastAuflösung * linienlast.Intensity[1]; nextPunkt = new Point(endPunkt.X + vec.X, endPunkt.Y + vec.Y); pathFigure.Segments.Add(new LineSegment(nextPunkt, true)); pathFigure.Segments.Add(new LineSegment(endPunkt, true)); lastVektor *= lastPfeilGroesse; lastVektor = RotateVectorScreen(lastVektor, 30); nextPunkt = new Point(endPunkt.X - lastVektor.X, endPunkt.Y - lastVektor.Y); pathFigure.Segments.Add(new LineSegment(nextPunkt, true)); lastVektor = RotateVectorScreen(lastVektor, -60); nextPunkt = new Point(endPunkt.X - lastVektor.X, endPunkt.Y - lastVektor.Y); pathFigure.Segments.Add(new LineSegment(nextPunkt, false)); pathFigure.Segments.Add(new LineSegment(endPunkt, true)); pathFigure.Segments.Add(new LineSegment(startPunkt, false)); pathGeometry.Figures.Add(pathFigure); return(pathGeometry); }