![]() |
Drehsinn von Ebenen
Liste der Anhänge anzeigen (Anzahl: 1)
Gibt es die Möglichkeit herauszufinden ob der Drehsinn einer Ebene mathematisch positiv oder negativ eingegeben wurde (Siehe Anlage)? :oops:
|
AW: Drehsinn von Ebenen
Ich schätze mal nicht. Für eine Drehung bzw eine sichtbare Orientierung eines Objektes gibt es mehrere Wege die nach Rom führen.
|
AW: Drehsinn von Ebenen
Zitat:
|
AW: Drehsinn von Ebenen
Meinst
![]() Such mal nach "clockwise" auf der Seite. So sieht die Funktion bei mir aus:
Delphi-Quellcode:
Bin mir aber nicht ganz sicher, ob es das ist, was Du suchst.
function TPolygon.IsClockwiseXY: Boolean;
// Paul Bourk - A = Area des Polygons var A: Double; i: Integer; begin A := 0; for i := 0 to Count - 2 do A := A + (Self[i].X * Self[i + 1].Y - Self[i + 1].X * Self[i].Y); A := A / 2; Result := A < 0; end; |
AW: Drehsinn von Ebenen
Hallo Jens,
das mit A = Summe Determinanten / 2 stimmt nur am Gesamtsystem. |
AW: Drehsinn von Ebenen
|
AW: Drehsinn von Ebenen
Du zählst die Punkte eh irgendwie anders. Ist das FEM-Shit?:shock:
|
AW: Drehsinn von Ebenen
Nee, ich zähle nicht anders? :) Deine Formel gilt hat nicht für Slice(Polygon) und wäre auch nur so wie gezeigt richtig, wenn du den 1. Punkt als letzen Punkt nochmal drin hast.
Ich brauch das für die Berechnung von Volumen und Schwerpunkt von Spannungskörpern bei schiefer Biegung für meine Polyederklasse. Polyeder sind quasi räumliche N-Ecke. Da gibt man die Eckpunkte und die einzelnen Begrenzungsebenen an. Voraussetzung ist hierbei, daß alle Ebenen mathematisch positiv eigegeben worden sind. Hierfür wollte ich eine kleine Überprüfung schreiben und falls nicht dann die Punkte in umgekehrter Reihenfolge setzen.
Delphi-Quellcode:
Polyeder.Clear;
Polyeder.AddPoint(1, 1, 0); Polyeder.AddPoint(4, 1, 0); Polyeder.AddPoint(4, 6, 0); Polyeder.AddPoint(1, 6, 0); Polyeder.AddPoint(4, 6, 10); Polyeder.AddPlane([0, 3, 2, 1]); Polyeder.AddPlane([1, 2, 4]); Polyeder.AddPlane([1, 4, 0]); Polyeder.AddPlane([4, 3, 0]); Polyeder.AddPlane([3, 4, 2]); ShowMessage(Format('%.3f', [Polyeder.Volumen])); C := Polyeder.Center; ShowMessage(Format('%.3f', [C.X])); ShowMessage(Format('%.3f', [C.Y])); ShowMessage(Format('%.3f', [C.Z])); |
AW: Drehsinn von Ebenen
Zitat:
Bis dahin... |
AW: Drehsinn von Ebenen
Einfach von allen aneinanderliegenden Vektoren (Differenzen zwischen den Punkten) das
![]() Du solltest aber auch noch prüfen, ob die Punkte wirklich auf einer Ebene liegen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz