Autor Beitrag
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mo 14.04.03 23:37 
ich habe ein Problem (was auch sonst)*gg*:
ich habe im 3D-Raum ein 3Eck, von dem ich die X,Y,Z-Koordinaten der 3 Ecken weiß...
wie kann ich die Höhe (Y-Wert) von dem Dreieck an einem bestimmten x,z-Wert , die innerhalb des dreiecks liegen herausbekommen??
thx schonmal...


Zuletzt bearbeitet von Raphael O. am Fr 25.04.03 19:35, insgesamt 1-mal bearbeitet
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Mo 14.04.03 23:41 
Du bildest mit den 3 Punkten eine Ebene und nimmst die Normale, die durch den Abstandspunkt geht. Nun rechnest du den Schnittpunkt aus der Gerade und der Ebene. Somit hast du 2 Punkte und deren Abstand suchst du. :)
Raphael O. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mo 14.04.03 23:57 
in anbetracht dessen ,dass es spät ist, habe ich noch nicht alles kapiert :(
Zitat:
Du bildest mit den 3 Punkten eine Ebene

genau! eben mein Dreieck...
Zitat:
und nimmst die Normale

alles klar
Zitat:
die durch den Abstandspunkt geht.

mit abstandspkt meinst du den Pkt, von dem ich die höhe will, oder??
Zitat:
Nun rechnest du den Schnittpunkt aus der Gerade und der Ebene
. welche gerade denn?? :roll:
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Di 15.04.03 00:25 
Also, du bildest erstmal die Ebengleichung der Form
ax + by + cz + d = 0
Die Normale ist ja (a b c), das ist der Richtungsvektor. Nun muss die gesuchte Gerade durch den "Höhenpunkt" gehen, genannt p. Daraus ergibt sich folgende Geradengleichung:
x = p + Lambda*(a b c)
Die Gerade muss ja die Ebene schneiden, der Punkt ist gesucht. Sprich: Es muss ein Wert für Lambda gefunden werden.
Setz dazu einfach die X/Y/Z Komponenten der Geradengleichung in die Ebenenformel ein und Rechne Lambda aus.
Einfach nun p + Lambda(abc) ausrechnen und schon hast du den Punkt, in dem die Gerade die Ebene schneidet.
Voilà, du hast 2 Punkte, den Schnittpunkt und den "Höhenpunkt" und deren Abstand ist
Wurzel( (x1-x2)² + (y1-y2)² + (z1-z2)²)

Wie man das ganze nun in Delphi umsetzt, keine Ahnung...
Raphael O. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Di 15.04.03 00:34 
werde es morgen (eigentlich ja heute ;)) mal ausprobieren...
danke schonmal
Raphael O. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Fr 25.04.03 15:29 
*gg* was ist lambda?
und auch sonst... keine Ahnung, was bei deiner Ebenengleichung was ist...
(a,b,c,d)...

irgendwie checke ich das net ganz :(

könnteste mal ein Bild in paint machen auf dem das ersichtlich ist?? *guckt.lieb*
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 25.04.03 16:26 
Also, mein Bild sieht so aus:

user defined image


Ich habe jetzt mal die Achsenbeschriftungen weggelassen, weil die in diesem Fall eigentlich egal sind.

Im folgenden werde ich Vektoren fett schreiben und Skalare normal. Hierbei ist k nicht der Betrag von k, sondern eine beliebige reelle Zahl, genauso bei m und m.

Die Vektoren zu den Punkten A,B,C bezeichne ich mit den selben Buchtsaben nur in klein.

Die Vektoren m und k (also die zwischen A und B und A und C) spannen eine Ebene auf. Mit diesen Vektoren ist aber erst die Lage der Ebene beschrieben und noch nicht die Position. Dafür brauchen wir noch einen Aufpunkt, was ein beliebiger Punkt ist, von dem wir wissen, dass er in der Ebene liegt. Wir nehmen den Punkt A.

Unsere Ebenengleichung sieht dann so aus (ich bezeichne die Ebene mit E):

E = k * k + m * m + a

Nehmen wir nun an, die Du hast die Koordinaten x und z eines Punktes, dessen Ortsvektor (x,y,z) ist. Um herauszufinden, welchen Wert y hat, müssen wir k und m ausrechnen. Das ist kein Problem, denn wir haben zwei unbekannte (k und m) und zwei Gleichungen (für die x-Komponente und die z-Komponente). Wenn wir sagen, dass k aus den Komponenten kx, ky und kz besteht und wir m und a genauso aufschreiben, sehen die beiden Gleichungen so aus:

x = k * kx + m* mx + ax
z = k * kz + m * mz + az

Daraus kann man nun leicht m und k berechnen. Dein y-Wert ist dann:

y = k * ky + m * my +ay

So, und dann wären wir fertig.

Mfg,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Raphael O. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Fr 25.04.03 19:33 
:eyecrazy:
ok... das werde und muss ich dann mal verstehen jetzt ;)...

vielen dank an alle, die mir hier geholfen haben :)