Einzelnen Beitrag anzeigen

juniorA

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

AW: Vom Vektor zur Ebene

  Alt 24. Jun 2013, 12: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;
Miniaturansicht angehängter Grafiken
3punkt.jpg  
  Mit Zitat antworten Zitat