AGB  ·  Datenschutz  ·  Impressum  







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

Vom Vektor zur Ebene

Ein Thema von juniorA · begonnen am 16. Jun 2013 · letzter Beitrag vom 25. Jun 2013
 
juniorA

Registriert seit: 14. Sep 2011
112 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#21

AW: Vom Vektor zur Ebene

  Alt 24. Jun 2013, 11:49
Leider noch nicht am Ziel

Habe es eben mit den Vorschlag E3 := (V2-V1) x (P-V1) + V1 siehe Quelltext versucht aber da kommt nicht das gewünschte Ergebnis raus.

In meinem Beispiel hat P als Ausgangspunkt und ein Punkt der Dreiecksfläche E1 die Koordinaten (10, 0, 5) im Weltkoordinatensystem.
Auf den 2. Punkt der Dreiecksfläche E2, steht eine Senkrechte. Der Anfangspunt der Senkrechten hat eine Differenz zu P von (-5, 0,-5). Es ergeben sich damit die Weltkoordinaten für E2 von (5, 0, 0). Der Endpunkt der Senkrechten V2 hat zum Anfangspunkt der Senkrechten V1 eine Differenz von (-5, 0, 5).
Für den Punkt E3 gilt:
Der Abstand zu V1 = Abstand von V1 zu P = Abstand von V1 zu V2.
Weiter ist der Winkel P/V1/E3, P/V1/V2 und V2/V1/E3 0 90°.
Wie kann ich mir nun E3 ausrechnen, wenn P, V1 und V2 gegeben sind?

Das Ergebnis ist im Beispiel (5, 5, 0) aber wie kann ich mir dieses ausrechnen?

Habe dazu auch noch einmal eine Skizze gemacht.

Delphi-Quellcode:

type Tpoint3D = record
     X : single;
     Y : single;
     Z : single;
     end;

//------------------------------------------------------------------------------
// Bestimmen des 3. Punktes einer Fläche
//------------------------------------------------------------------------------
procedure fl_3Punkte(p, v1, v2 : TPoint3D; var E1, E2, E3 : TPoint3D);
var d1, d2, kp : TPoint3D;

begin
  E1 := P;

  E2.x := p.x + v1.x;
  E2.y := p.y + v1.y;
  E2.z := p.z + v1.z;

  // EP3 = (V2-V1) x (P-V1) + V1 ????
  d1.x := v2.x - v1.x;
  d1.y := v2.y - v1.y;
  d1.z := v2.z - v1.z;

  d2.x := p.x - v1.x;
  d2.y := p.y - v1.y;
  d2.z := p.z - v1.z;

  kp.x := (d1.y*d2.z) - (d2.y*d1.z);
  kp.y := (d1.z*d2.x) - (d2.z*d1.x);
  kp.z := (d1.x*d2.y) - (d2.x*d1.y);

  E3.x:= kp.x + v1.x;
  E3.y:= kp.y + v1.y;
  E3.z:= kp.z + v1.z;
end;
Angehängte Grafiken
Dateityp: jpg 3Punkt.jpg (33,5 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
 

 

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 17:56 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