Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 00:49

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Linie verlängern
BeitragVerfasst: Fr Jul 30, 2004 17:12 
Offline
DGL Member

Registriert: Sa Mär 20, 2004 22:48
Beiträge: 104
Sers,

wenn ich eine Linie von Punkt A nach Punkt B im dreidimensionalen Raum habe, und diese so verlängern will, dass z.B. der Z-Wert des Endpunktes genau X beträgt, wie muss ich das dann anstellen?

...bitte nicht zu schwer, bin erst 9. Klasse, und mir fehlt die komplette höhere Mathematik

Danke schonmal im vorraus, ich weiss, dass ihr mir helfen könnt, ihr könnt es schließlich immer :D


...sorry, hab' übersehen, dass das ein Bisschen verwirrend ist, mit X meine ich nicht den X-Wert, sondern irgendeine Variable

_________________
Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 31, 2004 00:39 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also ja...es ist verwirrend und ja man kann dir helfen aber:

Von welchen Typ soll die Variable sein und was soll sie angeben (die länge der Linie oder einen Punkt im 3 dim. Raum oder...)

Danach kann man dir sicher helfen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 31, 2004 11:30 
Offline
DGL Member

Registriert: Sa Mär 20, 2004 22:48
Beiträge: 104
Ich habe 3 normale double/extended was weiss ich was für Variablen, die einen Punkt im dreidimensionalen Raum darstellen. Dann habe ich noch einen Punkt, der dann genau wie der erste zusammengesetzt ist, und die beiden Punkte verbinden sich zu einer Linie. Ich will nun diesen letzten (eben beschriebenen) Punkt verlängern, bis der Z-Wert z.B. 8 beträgt, die Steigung der Linie soll sich aber nicht verändern, d.h. der X/Y-Wert muss sich auch verändern. Wie mach' ich das?

_________________
Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 31, 2004 12:19 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Dir kann geholfen werden.

Das geht mit einem Gleichungssystem. Du musst dann quasi den Durchstoßpunkt der Linie mit der XY-Ebene = 8 berechnen.

Wie das geht steht in dem Mathescript (PDF) was unter Links->General->CompGeo hier verlinkt ist.

Versuch da mal durchzusteigen.

Wenn du dann noch Fragen hast kannste die ja wieder stellen aber (und dass ist wichtig) setz dich erstmal mit dem Script hin ließ es dir durch (der Punkt der für dich wichtig ist. Das Scipt erklärt dir auch die ganze restliche Mathematik hinter OpenGL. Auch mit den Matrizen und so.), nimm nen Zettel und versuch mal ne Aufgabe mit der Hand zu rechnen. Das brauchste in der Computergrafik (was OpenGL is) immer wieder.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 31, 2004 13:28 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ok... es könnte sein, dass du mit dem Skript net klar kommst, da es schon ein gewisses Vorwissen vorraussetzt. (Auch wenn der Urschleim mit drinsteht is der doch ziehmlich knapp gehalten).

Ich hab mal ein Beispiel hier für dich:

(x,y,z) = punkt im Raum.

Du hast nen Vektor (das was du mit Gerade bezeichnet hast) V = (2,0,1)+t(0,2,1)
und ne Ebene E : (0,0,1)*(x,y,z)-8 = 0. (Das is die Ebene die du gemeint hast)

Der Vektor is jetzt willkürlich. Wenn du sowas selber aufstellen willst is das Pippi einfach:

Vektor = (Koord. eines Punktes wo die "Linie" durchgeht)+t(Koord.Ende - Koord.Anfang)

So nu zur Rechnung.
Im Script steht:
Code:
  1.  
  2. (n*a)t + (n*p0) + d = 0
  3.  
  4. Setzen wir doch mal unsere Werte ein und gucken was passiert:
  5.  
  6. ( (0,0,1)*(0,2,1) )t + ( (0,0,1)*(2,0,1) ) - 8 = 0  | Ausrechnen
  7.  
  8. ( ((0*0)+(0*2)+(1*1))*t + ( (0*2)+(0*0)+(1*1) ) - 8 = 0 | mal bissl übersichtlicher machen
  9.  
  10.               t         +            1          - 8 = 0 | Damit kommt folgendes raus
  11.  
  12. t = 7
  13.  
  14. So...was machen wir nun mit dem t!?!? .... In der Vektorgleichung vom Anfang gabs auch ein t! Einfach mal einsetzen und was passiert? :
  15.  
  16. (2,0,1) + 7(0,2,1) -> (2,0,1)+(0,14,7) -> (2,14,8) Und dass ist der Durchstosspunkt (wenn mich nicht alles täuscht).
  17.  


(Schreib dir mal die Rechnung aufn Zettel auf. Hier am Rechner sieht das alles etwas unförmig aus.)

So...das war eigentlich gar kein Ding. Wenn du aber mal selber ne komplett andere Aufgabe dieser art rechnen willst, musst du auch verstehn, wie man auf die Ebengleichung kommt. Und das geht so:
Code:
  1. im Script steht unter Hessische NormalForm das:
  2.  
  3. nx*x + ny*y + nz*z + d = 0     das kann man umformen indem man die ganzen n-Dinger wie einen Punkt aufschreibt und die x,y,z auch. ->
  4.  
  5. (nx,ny,nz)*(x,y,z) + d = 0
  6.  
  7. So... aber was bedeutet das nun!?:
  8.  
  9. (x,y,z) sind Punktkoordinaten. Das sind die Variablen deiner Gleichnung.
  10. d ist der Abstand deiner Ebene vom Koordinatenursprung. (dort wo die Ebene am nächsten am KOU liegt)
  11. und (nx,ny,nz) ist die normale deiner Ebene.
  12.  
  13. Was ist eine Normale? Ganz einfach (steht auch im Wiki):
  14. Eine Normale ist ein Vektor der genau senkrecht auf deiner Ebene steht. (In OpenGL brauchst du die andauernd).
  15. Wie berechne ich das Ding?:
  16. Eine Ebene kann man auch so beschreiben (andere Formal als die Obige):
  17.  
  18. E = (Px,Py,Pz) + t(V1x, V1x, V1x) + s(V2x, V2y, V3z) wobei
  19.  
  20. Px..Pz die Koordinaten eines Punktes (P0) in der Ebene,
  21. V1 der Vektor zwischen P0 und P1 und,
  22. V2 der Vektor zwischen P0 und P2 ist.
  23. (Man nennt sowas deshalb auch Dreipunkt-Gleichung, da die Formel aus 3 punkten gezaubert wird, die in der Ebene liegen)
  24.  
  25. Wenn du jetzt die beiden Vektoren V1 und V2 Kreuzmultiplizierst (steht im Tafelwerk und ist total simpel), kommt was in der Gestalt (x,y,z) raus. Die Normale ist dann dieser Vektor, wenn er die Länge 1 hat. Und wie macht man das?:
  26.  
  27. Normieren eines Vektors ( = Länge auf 1 setzen):
  28.  
  29. (1/Länge des Vektors)*(Vektor) = Normierter Vektor.  ->
  30.  
  31. (1/sqrt(X^2+Y^2+Z^2)) * (X,Y,Z) = normierter Vektor.
  32.  


So hoffe das war ausführlich... Das Script solltest du dir mit dem Wissen nochmal angucken. Dann erkennst du plötzlich was da drinnen steht.
:wink:

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 31, 2004 18:24 
Offline
DGL Member

Registriert: Sa Mär 20, 2004 22:48
Beiträge: 104
danke Flash, also so 'ne Riesenmühe für 'nen einzigen Post, Wahnsinn, wirklich cewl. Hat mir sehr geholfen.

Danke();

_________________
Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 01, 2004 01:11 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ja...bin auch bisl stolz, dass ich mit meinem Mathewissen mal jemanden weiterhelfen kann... :wink:

Ladt dir trotzdem mal das Script runter. Da drinen steht dann auch wie das mit den Matrizen so geht. Da kannste mal selber ne kleine Skizze aufm papier machen und mal per hand nen Würfel um x Grad drehen. Dann wird einem erstmal klar was OpenGl eigentlich macht.

Stehn einige interessante dinge drinnen.

(Ich fand alle meine Mathe-Vorlesungen wärend dem Studium ziehmlich Ar***los. Bis auf "Einführung in die Computergeometrie". Das is Mathe die man mit OpenGl direkt anwenden kann.)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]