-
Forum: Programmieren allgemein
Delphi
by Bjoerk,
31. Okt 2015
Hab auch nochmal überlegt. Ich mach es lieber mit einem Referenzvektor. Den soll/kann eine Ebene bekommen. Wären entweder (1, 0, 0) oder (0, 1, 0) oder (0, 0, 1) oder (-1, 0, 0) oder (0, -1, 0) oder (0, 0, -1) und vergleiche auf <0.
IsNeg = (PlaneNormal.X * V.X < 0) or (PlaneNormal.Y * V.Y < 0) or (PlaneNormal.Z * V.Z < 0).
Ich denke mal dieser Vektor wäre auch die 4. Zeile für die...
-
Forum: Programmieren allgemein
Delphi
by Bjoerk,
29. Okt 2015
Normal zur Plattenebene. Und da liegt wohl der Haken. Woher weiß die Ebene was Ihre Unterseite ist. Dazu bräuchte man erst eine Transformationsmatrix E um dann auf E > 0 o.ä. zu prüfen. Oder man gibt einen Referenzknoten an. Keine Ahnung?
-
Forum: Programmieren allgemein
Delphi
by Bjoerk,
29. Okt 2015
Das ist sicherlich no problem. Arber, das Problem ist, einen geeigneten Vektor zu finden um die fehlende Zeile der Determinante zu ergänzen. Hatte eben einen Fall wo es nicht ging. Ich lass es jetzt. Wenn noch jemand eine Idee zu hat, bitte her damit. Ich bin meinem Latein am Ende. Muß halt aufpassen daß ich die Ebenen korrekt eingebe.
|xA, yA, zA, 1|
|xB, yB, zB, 1|
Det |xC, yC,...
-
Forum: Programmieren allgemein
Delphi
by Bjoerk,
29. Okt 2015
Hi Bud,
wollte nicht "überarbeitet" rüberkommen. Sorry. Kann sein, daß das Kreuzprdukt bei bei D2 funzt, aber defintiv nicht bei D3.
Damit hat's (bis jetzt) für alle Beispiele gefunzt (aber nur, wenn man das System in den Urpsrung (0,0,0) verschiebt).
|xA, yA, zA, 1|
|xB, yB, zB, 1|
Det |xC, yC, zC, 1| > 0
-
Forum: Programmieren allgemein
Delphi
by Bjoerk,
28. Okt 2015
Für D2 hab ich's doch direkt über deinem Post gepostet?
function TD2Points.ClockwiseOrder(const J: integer): boolean;
var
I, K: integer;
D: double;
begin
I := Prev(J);
K := Next(J);
-
Forum: Programmieren allgemein
Delphi
by Bjoerk,
28. Okt 2015
Wie sieht denn sowas für den Raum aus, das wär's (denke ich mal) :gruebel:
Für 2D:
Current = B, A = Prev, C = Next
|xA, yA, 1|
Det |xB, yB, 1| > 0
|xC, yC, 1|
-
Forum: Programmieren allgemein
Delphi
by Bjoerk,
28. Okt 2015
Nein. Leider. Habs getestet. Und daß die Punkte auf der Ebene liegen ist hier gesichert weil die Ebenen so aufgespannt werden.
Der Code von #8 ist eine Pyramide. P0..P3 sind die Grundfläche, P4 die Spitze.
Bei Ebene 5 sagt er ist negativ.
Ich hab auf die Schnelle nur die ersten beiden Punkte einer Begrenzungsebene geprüft:
function TPolyeder.CrossProduct(const A, B: integer):...
-
Forum: Programmieren allgemein
Delphi
by Bjoerk,
28. Okt 2015
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...
-
Forum: Programmieren allgemein
Delphi
by Bjoerk,
28. Okt 2015
Hallo Jens,
das mit A = Summe Determinanten / 2 stimmt nur am Gesamtsystem.
-
Forum: Programmieren allgemein
Delphi
by Bjoerk,
28. Okt 2015
Gibt es die Möglichkeit herauszufinden ob der Drehsinn einer Ebene mathematisch positiv oder negativ eingegeben wurde (Siehe Anlage)? :oops: