höhe eines punktes im dreieck
Übersicht

bjhBetreff: höhe eines punktes im dreieck |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hallo community,
ich suche schon seit ein paar stunden nach einer funktion, die mir die y-koordinate eines punktes aus einem dreieck berechnen kann. ![]() es ist ein rechtwinkliges dreieck mit einer hypotenuse von wurzel 2 und den katheten mit 1: 0 | | p | 0---------0 die verschiedenen punkte können einen beliebigen y-wert über 0 haben, aber die x- und z-koordinaten bleiben gleich. wie kann man jetzt ausrechnen, welche y-koordinate der punkt p hat, von dem man die x- und z-koordinaten schon weiß ![]() ich will aber kein linepick verwenden ![]() und einfach den mittelwert der mittelwerte zu nehmen ist zu ungenau. ich hoffe, jemand kann mir weiterhelfen |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich nehme an, du kennst die Koordinaten der drei Punkte(Ecken des Dreiecks). Dann kannst du die Ebene von der das Dreieck ein Teil ist als Gleichung darstellen(Normalenform oder Parameterdarstellung, je nach dem was praktischer ist), dort deine zwei bekannten Koordinaten von P einfüllen und die fehlende Koordinate ausrechnen.
Ebenengleichungen: http://de.wikipedia.org/wiki/E...ngleichung |
||
bjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
tut mir leid, aber ich hab leider kein plan von matrizen.
ich bin in der 10.klasse aufm gymnasium aber das hatte ich noch nie. ich wäre sehr dankbar, wenn mir jemand ein beispiel machen könnte. vielleicht gibt es noch eine bessere/einfachere methode, weil sich nur meine y-werte verändern können |
||
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Zitat: (Normalenform oder Parameterdarstellung, je nach dem was praktischer ist), dort deine zwei bekannten Koordinaten von P einfüllen und die fehlende Koordinate ausrechnen.
Afaik geht das weder bei der Normalenform noch der Parameterdarstellung. Man braucht die Koordinatengleichung -> a*x + b*y + c*z = d. Hier kannst du dein x und z einsetzen, umformen und erhältst y. Um auf die Koordinatengleichung zu kommen braucht man meines Wissens nach erstmal eine der anderen Formen. Vielleicht hilft dir das hier ja weiter: http://www.klissh.de/vektorrechnung17.htm Noch kurz, weil nicht dabeisteht wie du deine Parametergleichung aufstellst: Sagen wir mal du hast die Punkte A, B und C. Du nimmst Punkt A als "Stützvektor". Du brauchst zusätzlich zwei "Richtungsvektoren". Dazu musst du jeweils die Koordinaten von einem der übrigen Punkte (B und C) nehmen und subtrahierst die X, Y und Z-Koordinaten von A von diesem Punkt: Beispielsweise ist Bx - Ax die X-Koordinate deines ersten Richtungsvektors. Am Ende hast du als Gleichung: Stützvektor + r*Richtungsvektor1 + s*Richtungsvektor2 Dann gehst du vor wie es bei dem Link oben beschrieben ist. Ich hoffe, das war einigermaßen verständlich erklärt. Wenn nicht einfach sagen, was zu kompliziert war. Gruß, Tennisball |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich will ja nichts sagen, aber Normalvektorform = Ebenengleichung, oder das was du Koordinatengleichung nennst. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, das kann sein. Ich bekam das halt so in der Schule beigebracht, dass das 2 unterschiedliche Dinge wären.
Aber sind "(q-p)*n = 0" und "ax+by+cz = d" nicht unterschiedliche Darstellungsweisen? Gruß, Tennisball |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ui, sorry, das ist wieder mal einer dieser Punkte, wo Mathematik in Deutschland und Österreich unterschiedlich ist. (Gibt's unglaublicherweise doch einige, meine Frau, in Deutschland aufgewachsen ist und jetzt hier Mathe-Nachhilfelehrerin ist, schimpft öfters darüber ![]() Die Normalvektordarstellung in Österreich ist nach dem Schema X*n = P*n, was, nachdem man es ausrechnet, x*a + y*b + z*c = d, was ja die Ebenengleichung ist, weswegen bei uns Ebenengleichung und Normalvektorform synonym war, da es die gleiche Gleichung in nur anderer Umformung ist. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Übrigens:
Alle diese Gleichungen, solange sie nur eine die Ebene eindeutig beschreiben lassen sich benutzen um das Problem zu lösen, manche sind nur komplizierter in der Umformung und Berechnung. Deswegen ist es vor allem wichtig zu wissen in welcher Form die Daten(Representation der Ebene/des Dreiecks) vorliegen. @bjh: Falls du mir den gegeben Posts noch nicht genug anfangen kannst, dann beschreib mal genauer welche Daten in welcher Form gegeben sind. Auch wichtig, du sagst das Dreieck ist rechtwinklig: sind zwei seiner Seiten entlang der Achsen ausgerichtet? Mit den gegebenen Längen scheint es mir so, als ob es sich evtl um eine Art von Terrain-System handelt, und die die Höhe in einem gegebenen Punk bestimmen möchtest. Ist das der Fall, dann kannst du all diese Formel-spielereien hier umgehen und den entsprechenden Wert tatsächlich ohne weiteres interpolieren. |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
bjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja es handelt sich hier um ein terrain.
die vertices haben eine quadratische anordnung und einen abstand von 4 um herauszufinden, welches dreieck berechnet werden muss, hab ich einfach die abfrage: if x+z>4 zweites dreieck else erstes dreieck endif die y-werte der vertices liegen zwischen 0 und 255. diese werte sind aber in einer bank abgespeichert, sind also schon zur verfügung. das mit den vektoren und matrizen check ich nicht, deshalb wäre ich sehr dankbar, wenn es auch ohne geht. ![]() vielen dank für die schnelle hilfe |
||
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube, Folgendes sollte funktionieren:
Du nimmst Punkt C (der gegenüber der Hypotenuse c, also da wo der rechte Winkel ist). Von diesem aus berechnest du quasi 2 Steigungen. Einmal dy/dx zu Punkt A, einmal dy/dz zu Punkt B. Da die Katheten und somit dx und dz immer 1 sind, musst du eigentlich nur die Differenzen entlang der Y-Achse berechnen. Also: Code: [AUSKLAPPEN] Mx = Cy - Ay
Mz = Cy - By Nun berechnest du die Differenz der X- und Z-Koordinate von Punkt C und P: Code: [AUSKLAPPEN] dx = Px - Cx
dz = Pz - Cz Nun erhältst du deinen Y-Wert (Py) folgendermaßen: Code: [AUSKLAPPEN] Py = Cy + Mx*dx + Mz*dz
Wie gesagt, ich habs nicht wirklich ausprobiert, konnte aber auf die Schnelle keinen Denkfehler erkennen. Vielleicht probiert's ja einer von euch aus? ![]() Gruß, Tennisball |
||
bjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@tennisball entweder mach ich was falsch oder das, was du da geschrieben hast ist falsch ![]() aber ich glaub ich hab das mit den vektoren gecheckt ich meld mich dann, wenns funktioniert und poste die lösung. |
||
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was auf jeden Fall falsch ist, ist der erste Teil, dort muss es nämlich heißen:
Code: [AUSKLAPPEN] Mx = By - Cy
Mz = Ay - Cy Außerdem musst du natürlich darauf achten, dass du A und B nicht vertauschst. Edit: So, ich habe zur Überprüfung mal ein Programm in BlitzMax geschrieben: BlitzMax: [AUSKLAPPEN] Graphics 256,256 Das Ergebnis: ![]() Ich finde, das sieht richtig aus. Gruß, Tennisball |
||
- Zuletzt bearbeitet von Tennisball am Mo, Feb 11, 2013 1:13, insgesamt 6-mal bearbeitet
bjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so vielen dank an alle für die hilfe.
ich habs geschafft und in sachen vektoren und matrizen was dazugelernt ![]() das ist die lösung: BlitzBasic: [AUSKLAPPEN] Graphics3D 0,0,32,1 das dreieck sieht so aus: b | | a-------c px+pz muss zwischen 0 und 1 liegen, damit es funktioniert. auf jedem fall ist mein problem gelöst und ich war schon fast am verzweifeln ![]() vielen dank |
||
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur so, die Lösung hat nichts mit Matrizen zu tun *klugscheiß*. ![]() Ja, das musste sein. |
||
bjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich weiß ![]() aber ich habs trotzdem verstanden |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group