AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Drehsinn von Ebenen

Ein Thema von Bjoerk · begonnen am 28. Okt 2015 · letzter Beitrag vom 31. Okt 2015
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#21

AW: Drehsinn von Ebenen

  Alt 29. Okt 2015, 15:47
Wie soll der Drehsinn in 3D überhaupt definiert sein
Wenn man das ganze auf eine festgelegte Ebene projiziert dann kann man wieder den 2D-Ansatz nehmen.
In deinem Beispiel wäre die Projektionsebene eine die parallel zur x- und zur y-Achse ist.

Ansonsten macht das Ganze imho nicht so viel Sinn.

Geändert von BUG (29. Okt 2015 um 15:47 Uhr) Grund: :grübel: => :gruebel:
  Mit Zitat antworten Zitat
Bjoerk

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

AW: Drehsinn von Ebenen

  Alt 29. Okt 2015, 23:20
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[3, 3] > 0 o.ä. zu prüfen. Oder man gibt einen Referenzknoten an. Keine Ahnung?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#23

AW: Drehsinn von Ebenen

  Alt 30. Okt 2015, 16:11
Ich denke, man müsste/könnte von einem Punkt der Fläche aus in Richtung der Normalen einen Strahl aussenden und dann die Anzahl der Schnittpunkte mit den anderen Flächen zählen.

Oder, falls der Polyeder konvex ist, könnte man auch die vektorielle Distanz zwischen dem Mittelpunkt und einem Punkt auf der Fläche berechnen, und dann schauen, ob dieser "in die gleiche Richtung" zeigt wie die Normale der Fläche (Skalarprodukt > 0), was einfacher und schneller wäre.
  Mit Zitat antworten Zitat
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, 11: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
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz