Einzelnen Beitrag anzeigen

juniorA

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

AW: Lot/ Schnitpunkt gesucht

  Alt 28. Jun 2013, 17:32
Problem mit Punkt auf Fläche

Ich hatte vor einigen Wochen schon einmal das Problem mit dem Lot eines Punktes auf eine Fläche im Raum. Der erste Test damals war OK aber jetzt beim nähren Testen klappt es doch nicht. Der Punkt liegt auf den Koordinaten (x=5, Y=5, Z=20)

Meine Fläche hat beim Testen die Koordinaten
Test 1 E1( 0, 0, 0), E2( 10, 0, 0), E3(10, 10, 10) Ergebnis für die Höhe 5 (richtig)
Test 2 E1( 10, 0, 0), E2( 10, 10, 0), E3( 0, 10, 10) Ergebnis für die Höhe 5 (richtig)
Test 3 E1( 10, 10, 0), E2( 0, 10, 0), E3( 0, 0, 10) Ergebnis für die Höhe 7,071 (falsch) 5 richtig
Test 4 E1( 0, 10, 0), E2( 0, 0, 0), E3(10, 0, 10) Ergebnis für die Höhe 5 (richtig)
Test 5 E1(-10, 0, 0), E2( 0,-10, 0), E3( 0, 0, 10) Ergebnis für die Höhe 1 5 (richtig) 10 richtig?
Test 6 E1( 0,-10, 0), E2( 10, 0, 0), E3( 0, 0, 10) Ergebnis für die Höhe 5 (falsch)
Test 7 E1( 10, 0, 0), E2( 0, 10, 0), E3( 0, 0, 10) Ergebnis für die Höhe 5 (falsch) 0 richtig

Was ist falsch bei Test 3 und Test 6? Hat einer eine Idee oder Funktion für dieses Problem ?


Im Anhang ist der jetzige Code


Delphi-Quellcode:
//------------------------ Fällt das Lot auf eine Fläche -----------------------
function lot_flaeche(p1, p2, p3, lot : TPoint3d): single;
var nx, ny, nz, hx, hy, hz, sp, ln : single;
begin
  nx := p2.y*p3.z - p3.y*p2.z;
  ny := -(p1.y*p3.z - p3.y*p2.z);
  nz := p1.y*p2.z - p2.y*p1.z;
  hx := lot.y - p1.x;
  hy := lot.x - p2.x;
  hz := lot.z - p3.x;
  sp := hx*nx + hy*ny + hz*nz;
  ln := sqrt(nx*nx + ny*ny + nz*nz);
  result := abs(sp/ln);
end;
  Mit Zitat antworten Zitat