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

Aktuelle Zeit: Fr Jul 18, 2025 14:13

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Ansichtstotale
BeitragVerfasst: Mo Dez 20, 2004 09:07 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
Hallo Leute!
Ich habe folgendes Problem:
Ich will eine Kamera so positionieren, daß sie genau alles zeigt (z.B.: von oben nach unten). Ich habe die Mini- und Maximalwerte meiner map berechnet, also so eine Art Hülle um das ganze. Jetzt muss die Kamera so positioniert wertden, daß sie genau im Mittelpunkt steht und nach unten schaut (das hab ich schon). Mein Problem besteht nun darin, die Höhe über meiner Map zu bestimmen, wo die Kamera stehen soll, um alles zu sehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 20, 2004 13:25 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Also, dass Graue ist deine Scene, das Rote die Camera (Sie gucktz senkrecht nach unten).

Nuzn machst du für jeden Punkt deiner Snene folgendes:

Bestimmung des Abstandes d des Punktes vom Punkt, welcher senkrecht unter der Camera auf der selben höhe zum Punkt steht (sihe Bild :-) ).

W ist dann der Hsalbe Sichtwinkel (Wobei der natürlich Variert, wenn mann in von oben nach unten oder von links nach rechts oder über der diagonale bestimnt, aber der im Befehl gluPerspective(Winkel, ... ); sollte es tun).

Dann ist Tan(W)=d/h ! Was nach h aufgelöst ergibt: h=d/Tan(W). (Dies ist jedoch die relative höhe der Camera zum Punkt)

Die absulute Höhe ist dann h plus die Höhe des Punktes für den du h bestimmt hasst.

Dass machts du für alle Punkte und nimmst dann die absulute Höhe, welche am größten ist.

Diese methode ist natürlich nicht perfekt (Dafür musste mann breücksichtigen, dass der Bildschirm rechtekig ist), es kann jedoch im schlimmsten Fall passieren, dass die Camera ein wenig zu Hoch steht.

Ich hoffe Du kannst damit was anfangen und optimieren kannst du es ja immernoch.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 20, 2004 13:59 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
genau so hab ich das auch implementiert, aber meine Kamera ist
a) immer zu niedrig und
b) der Grad des 'Zuniedrigseins' hängt vom Sichtwinkel ab.
ich vermut mal, daß die Formel die 'Höhe' des Bildschirmes berechnet und die Kamera selber noch einen tick höher sein muß.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 20, 2004 14:29 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Nö die Formel berechnet schon den Abstand zum Scheitelpunkt, da bin ich mir sicher.

Wenn du einen abstand in zwei Richtungen hasst (hatt mann ja eigentlich immer, musste noch
d=wurzel(quadrat(dx)+quadrat(dz))
rechnen.

Und ansonsten schätze ich, dass da ein flüchtigkeits-Fehler bei der Berechnung des absuluten l's vorliegt (Das habe ich immer bei so relativ einfachen sachen :-) ).

Oder hasste vergessen w=Sichtwinkel/2.

Ausserdem benötigt die cos Funktion Bogenmaß.

Hm, mehr fellt mir erstmal nicht ein, poste doch sonnst mal die wichtigen Codeteile.

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 20, 2004 14:46 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
Code:
  1.  
  2. ...
  3.     If oGLPanel.MinMax(oMin,oMax)
  4.     Then begin
  5.       Case _eCamPos Of
  6.        cpTopDown: Begin
  7.           oCenter.X:=(oMin.X+oMax.X)/2;
  8.           oCenter.Z:=(oMin.Z+oMax.Z)/2;
  9.           oCenter.Y:=oMin.Y;
  10.           oEye:=oCenter;
  11.           dWinY:=(oCenter.Z-oMin.Z)*oGLPanel.SideRatio;
  12.           dWinX:= oCenter.X-oMin.X;
  13.           dWinTot:=sqrt(2*Power(Max(dWinX,dWinY),2));
  14.           oEye.Y:=oMax.Y+dWinTot/Tan((oGLPanel.ViewArc/180*Pi));
  15.           oUp.X:=0;
  16.           oUp.Z:=-1;
  17.           oUp.Y:=0;
  18.         End;
  19. ....
  20.  

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 20, 2004 19:00 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
Hast du vielleicht der die das FOV bei gluPerspective zu niedrig/zu hoch eingestellt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 20, 2004 19:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Ist dass nict der Sichtwinkel (oGLPanel.ViewArc) ??? Habe den Suadruck noch nicht gesehen :-)
Aber falls er es ist, musst du den erst durch zwei Teilen!
Probiers mal (kann sein ich bin lieger falsch)...

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 20, 2004 19:59 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
ViewArc ist ne property von meinem TGLPanel (eigene Klasse) und beinhaltet den Sichtwinkel ger gluPerspective.
@mr.Fletcher der trick ist daß es unabhängig vom FOV sein soll. Ist im Moment 45° soll aber variabel sein wegen zoom und so

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 20, 2004 20:19 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Dann musst du es auf jeden Fall noch durch zwei teilen (W ist ja der Halbe sichtwinkel)!!! Oder?

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 07:21 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
wenn ich den winkel durch 2 teile stimmts garnicht mehr .. dann bin ich viel zu weit weg. Ich denke wirklich, man muß noch etwas draufschlagen, aber das Problem ist halt, wieviel.
Ich denke mit übertragen auf eine richtige Kamera wäre der Abstand, der mir dieser Formel berechnet wird, die Entfernung bis zur Linse und es muß noch die Entfernung bis zum Film dazuaddiert werden, also die Brennweite des Objektivs. Analog hier die Entfernung bis zum Bildschirm und jetzt fehlt noch die Entfernung bis zum Auge oder so

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 10:06 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
Eureka!!!!!!!!!!!!!!!!
in meiner Formel waren zwei Fehler. Hier die richtige:
Code:
  1.  
  2.           oCenter.X:=(oMin.X+oMax.X)/2;
  3.           oCenter.Z:=(oMin.Z+oMax.Z)/2;
  4.           oCenter.Y:=oMin.Y;
  5.           oEye:=oCenter;
  6.           dWinY:=oCenter.Z-oMin.Z;
  7.           dWinX:=(oCenter.X-oMin.X);
  8.           dWinTot:=Max(dWinX,dWinY);  // falsche Abstandsberechnung
  9.           oEye.Y:=oMax.Y+dWinTot/Tan((oGLPanel.ViewArc/360*Pi)); // und der Winkel muß doch halbiert werden
  10.           oUp.X:=0;
  11.           oUp.Z:=-1;
  12.           oUp.Y:=0;
  13.  

und danke für die Hilfe

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 17:55 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Funktioniert das auch bei beliebigem Blickvektor? Also nicht senkrecht über der Szene?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 21:27 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
So wies da steht nicht aber ich glaube mit ein bisschen Nachdenken und dran rumschrauben könnte man das auch hinkriegen.
willst Du nur einen anderen Blickwinkel oder eventuell auch gedreht?

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 21:36 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich hatte vor Kurzen ne ähnliche Frage gestellt gehabt. Da gings darum den Blickvektor so zu lassen wie er ist und einfach soweit nach hinten rauszuzoomen, dass alles aufm Bildschirm passt.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 22, 2004 16:30 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
Also: ich hab mir das so überlegt:
du machst von jeder Kantenmitte aus eine Gerade in Richtung Potentiellen Blickpunkt, aber eben um den Neigungswinkel verdreht. jetzt lässt du alle geraden sich schneiden und der Schnittpunkt mit der größten Höhe über dem Objekt ist der gesuchte Zielpunkt. (Siehe Bild) alpha ist der Öffnungswinkel der Perspektive und Beta ist der Winkel, um den deine Kamera vom Lot abweicht. in der anderen Ebene gehts genauso, nur dass Du die Winkel nicht addierst, sondern sie senkrecht aufeinander stehen.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]