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

Aktuelle Zeit: Di Jun 04, 2024 04:53

Foren-Übersicht » DGL » Feedback
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Danke für euer Wiki (OpenGL)
BeitragVerfasst: Mo Mär 20, 2006 18:11 
Offline
DGL Member

Registriert: Mo Mär 20, 2006 17:37
Beiträge: 5
Wohnort: Stolberg bei Aachen
Nicht zuletzt durch das sehr gut beschriebene Wiki habe ich es geschafft für mich eine universelle Funktion für das Drehen einer Karte zu schreiben. Die Karte ist zur Zeit noch nicht in Y-Richtung rotiert. (Mache ich als nächstes)

Zum Test benutze ich eine Map 1024 *1024 (das ist aber unerheblich)

Der Drehpunkt muß sich auf der Map befinden. Genauer gesagt innerhalb des 90° Winkels der vom Ursprung ausgeht. Sonst wäre mehr Mathe nötig.

Dann ist es in C geschrieben (Delphi kann ich nicht. evtl. noch nicht). Bei Bedarf habt ihr sicher welche die es umschreiben.


Falls Bedarf besteht:

Code:
  1. void Kamera::male() {
  2. Nah=1; // Test - Werte
  3. Fern=1000000; // Test - Werte
  4.     glMatrixMode(GL_PROJECTION); // Kameraparameter!
  5.     glLoadIdentity();            // zuruecksetzen
  6.     gluPerspective(45,Aspekt,Nah,Fern);
  7.  
  8.     glMatrixMode(GL_MODELVIEW);  // Blickpunkt!
  9.     glLoadIdentity();            // Kamera an den Ursprung setzen
  10.  
  11.     glTranslatef(Pos_x,Pos_y,Pos_z); // eigenen gewünschten Punkt setzen
  12.     glTranslatef(DeltaPos_x,0,DeltaPos_z); // um den zusätzlichen Wert wegen des Winkels verschieben
  13.     glRotatef(Beta,0,1,0); // Um den Winkel drehen
  14.     glScalef(Scalierung,Scalierung,Scalierung); //gewünschte Zoom
  15. }
  16.  
  17.  
Diese Funktion wird vor jedem Zeichnen aufgerufen und setzt die Werte. Die zwei glTranslatef können sicher zusammengefasst werden, aber so ist es übersichtlicher für mich.

Dann die Funktion Drehe:

Code:
  1. void Kamera::Drehe(GLfloat Faktor, GLfloat Mitte_x, GLfloat Mitte_z) {
  2.     GLfloat Abstand=sqrt((Mitte_x*Mitte_x)+(Mitte_z*Mitte_z));
  3.     GLfloat Winkel;
  4.     if (Mitte_z !=0) Winkel=PI_HALBE-atan(Mitte_x/Mitte_z);
  5.     else Winkel= 0;
  6.     Beta+=Faktor;
  7.     DeltaPos_z=-(-Abstand*sin((Beta/57.29578-Winkel))-Abstand*HALB_MAL_WURZEL2);
  8.     DeltaPos_x=-Abstand*cos((Beta/57.29578-Winkel))+Abstand*HALB_MAL_WURZEL2;
  9. }
  10.  

Faktor ist der zusätzliche Winkel (+/-). Beta ist der tatsächliche Winkel. Mitte_x, Mitte_z ergeben den Punkt um den gedreht wird (immer positiv)


Hoffe es ist zu brauchen.

Gruß Robert

Achja um nicht rechnen zu müssen:
Code:
  1. #define PI_HALBE 1.5707963267948966192313216916398
  2. #define HALB_MAL_WURZEL2 0.70710678118654752440084436210485
  3.  


Zuletzt geändert von Robertico am Di Mär 21, 2006 00:54, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 20, 2006 22:31 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das hört man gern! Immer wieder schön wenn die Arbeit die man in ein solches Projekt steckt sich am Ende auszahlt.

Wegen deiner Kamera: Falls du Inspiration brauchst hat unser User Andyh einen 3 Teiligen Artikel zum Thema Kamera geschrieben.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 20, 2006 23:57 
Offline
DGL Member

Registriert: Mo Mär 20, 2006 17:37
Beiträge: 5
Wohnort: Stolberg bei Aachen
Es war für mich ein inneres Bedürfnis mich zu bedanken. Gelernt habe ich auch viel dadurch. Viele alten Sachen (bin nicht mehr so jung) Sinus, Kosinus und Konsorten mußte ich herauskramen. Freue mich aber, dass ich dies geschafft habe ohne eine fertige Funktion zu nehmen(lange gesucht aber nicht gefunden). Jetzt habe ich ein wenig mehr Durchblick. Werde mir die Kamera anschauen und hoffe, dass sie wie alles, was ich bei euch gesehen habe, gut ist.

Freundlichen Gruß

Robert


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 25, 2006 00:14 
Offline
DGL Member

Registriert: Fr Mär 24, 2006 23:56
Beiträge: 1
Hallo zusammen,

ich wollte mich auch mal bei euch für euer tolles Wiki und vor allem für die Tutorials bedanken.
Es ist wirklich erstaunlich, wie einfach und schnell man mit der Hilfe der Tutorials schon gut aussehende Dinge realisieren kann.
Ich hatte mal ein Buch welches in DirectX einführen sollte und habe es nach ein paar Tagen aus der Hand gelegt, weil es einfach nicht zur Sache kam.
Ergebnisse zeigten sich nur sehr langsam. Bei den DelphiGL-Tutorials kann man nach zwei Tagen schon ein kleines Sonnensystem programmieren (auch wenn die Planeten dann noch zweidimensionale Dreiecke sind :wink: )

Jedenfalls konnten wir Dank eurer Hilfe eine anschauliche Visualisierung für unser Jugend forscht-Projekt über Ortskurven programmieren.
Schließlich sind wir auf Landesebene dritter geworden und die OpenGL-Visualisierung hat dafür gesorgt, dass die Leute verstanden haben, was wir da gemacht haben.

Danke dafür!
Thomas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 25, 2006 00:37 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Na das ist doch schön zu hören, dass unsere Tuts Leuten bei so anspruchsvollen Sachen wie Jugen Forscht hilft. Ein weiteres Beispiel dafür, dass OpenGL nicht automatisch Computerspiele bedeutet.

Danke fürs Feedback. Ich persönliche hoffe du/ihr beschäftigt euch auch weiterhin mit OpenGL. Falls Fragen aufkommen, seid ihr hier bei uns natürlich jederzeit willkommen. :D

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 25, 2006 01:07 
Offline
DGL Member

Registriert: Mo Mär 20, 2006 17:37
Beiträge: 5
Wohnort: Stolberg bei Aachen
Wer sagt so etwas, das opengl automatisch Computerspiele bedeuten? Wer so etwas sagt, hat sicher keine Ahnung. Natürlich sind die Möglicheiten prädestiniert dafür in einem Spiel gebraucht zu werden. Was wäre unser Leben ohne nicht ab und zu (bewußt im Spiel) belogen zu werden.
Es ist ganz einfach ein Manager, der in unserer Sprache mit der Grafikkarte verhandelt. Es gibt einige solcher Manager, OpenGl macht das Verhandeln ganz gut.

Das hat aber nichts, absolut nichts mit Spiel, sondern mit 3D zu tun.


Gruß Robert

Anhang: Was man damit macht. Eine Werbung; Präsentation, Spiel, das bleibt doch jedem selbst überlassen.

Übrigens: Fragen habe ich einige. Wenn ich nicht selbst damit zurecht komme, bin ich froh hier fragen zu dürfen. Aber zuerst: Selbst ist der Mann ;)


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


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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]