AGB  ·  Datenschutz  ·  Impressum  







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

Polygon - Punkte im Uhrzeigersinn

Ein Thema von e-gon · begonnen am 18. Aug 2017 · letzter Beitrag vom 18. Aug 2017
Antwort Antwort
Seite 2 von 2     12   
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#11

AW: Polygon - Punkte im Uhrzeigersinn

  Alt 18. Aug 2017, 17:30
Zitat:
Nimmt man z.B. ein Polygon, daß eine Acht bildet: Was ist denn da links/rechts rum?
Bei Räumen wäre sowas schlecht. Vllt sollte man das Polygon vorher auf einen Überschlag prüfen.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Bjoerk

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

AW: Polygon - Punkte im Uhrzeigersinn

  Alt 18. Aug 2017, 18:34
Für meinem Polyeder hatte ich mir das überlegt. Ich verwende es nicht, aber wenn ich noch recht erinnere, funktioniert das nur, wenn die Ebenen parallel einer globalen Bezugsebene liegen.

Das sollte bei deiner Tür aber der Fall sein.

Prüfen tut man drei aufeinanderfolgende Punkte. Wenn die Tür 4 Punkte hat dann (P1, P2, P3), (P2, P3, P4), (P3, P4, P1) und (P4, P1, P2) prüfen. Alle müssen Counterclockwise sein.

Delphi-Quellcode:
function TPolyeder.Counterclockwise(const A, B, C: integer;
  const Align: TPlaneAlign): boolean;
var
  AB, AC, N, E: 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;
  N.X := AB.Y * AC.Z - AB.Z * AC.Y; // PlaneNormal
  N.Y := AB.Z * AC.X - AB.X * AC.Z; // ..
  N.Z := AB.X * AC.Y - AB.Y * AC.X; // ..
  E.X := 0;
  E.Y := 0;
  E.Z := 0;
  case Align of
    paPlusX: E.X := 1;
    paPlusY: E.Y := 1;
    paPlusZ: E.Z := 1;
    paMinusX: E.X := -1;
    paMinusY: E.Y := -1;
    paMinusZ: E.Z := -1;
  end;
  if (E.X * N.X < 0) or (E.Y * N.Y < 0) or (E.Z * N.Z < 0) then
    Result := false
  else
    Result := true;
end;
Code:
 Z
 |
 | /Y
-/-------X
Wenn das globake KOO so ist, und die Tür in X-Z Ebene liegt dann wäre PlaneAlign paPlusY oder paMinusY.

Kannst ja mal probieren?

LG Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:25 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