Thema: Delphi Drehsinn von Ebenen

Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: Drehsinn von Ebenen

  Alt 31. Okt 2015, 10:52
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.
Code:
  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 Determinante von #19. Keine Ahnung?

Wenn A,B,C die 1. Ersten drei Punkte der Ebene sind, dann geht der Normaldingens doch so, oder?
Delphi-Quellcode:
function TPolyeder.PlaneNormal(const A, B, C: integer): TPolyederPoint;
var
  AB, AC: TPolyederPoint;
begin
  AB.X := FPoints[B].X - FPoints[A].X;
  AB.Y := FPoints[B].Y - FPoints[A].Y;
  AB.Z := FPoints[B].Z - FPoints[A].Z;

  AC.X := FPoints[C].X - FPoints[A].X;
  AC.Y := FPoints[C].Y - FPoints[A].Y;
  AC.Z := FPoints[C].Z - FPoints[A].Z;

  Result.X := AB.Y * AC.Z - AB.Z * AC.Y;
  Result.Y := AB.Z * AC.X - AB.X * AC.Z;
  Result.Z := AB.X * AC.Y - AB.Y * AC.X;

  Showmessage(Format('%.4f, %.4f, %.4f', [Result.X, Result.Y, Result.Z]));
end;
  Mit Zitat antworten Zitat