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

Aktuelle Zeit: Fr Jul 18, 2025 23:22

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Mär 19, 2007 23:18 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Nov 18, 2005 18:28
Beiträge: 26
Hi,

Um die Sichtweise des Snipers beim Blick durchs Zielfernrohr nach zu stellen lasse ich per GL_LINES einige linien zeichnen, die im Radius der Linse kreisrund angeordnet sind und auf die Mitte orientiert sind.

So war zumindest der Plan. Leider sieht das Ergebnis anderes aus.

Zum Code:

Die x - Koordinate des Startpunktes einer Linie wird mit cos(winkel) * radius berechnet, die y - Koordinate dementsprechend mit sin(winkel) * radius.

der winkel wird per schleife bis auf 360 um jeweils 5 erhöht. der radius beträgt jeweils 0,75. Da der Sinus und Cosinus immer zwischen -1 und 1 pendel, sollte ich bei 360 eigentlich einmal im Kreis rum sein. Die erste Linie wird noch korrekt gesetzt, die zweite schon nicht mehr. Diese liegt dann schon ungefähr bei einem Winkel von 53°, woher kommt aber diese Angabe?

Code:
  1.  
  2. ...
  3.  While i < 360 Do
  4.   Begin
  5.    RenderLine(i, 0.75, 0.77, 0, 0, 0.5, 0.5, 1, 1, 0.4, 0.4);
  6.    Inc(i, 5);
  7.   End;
  8. ...
  9.  
  10. Procedure TForm1.RenderLine(Angle: Single; Inner, Outer: Single;
  11.                  R1, R2, G1, G2, B1, B2, A1, A2: Single);
  12. Begin
  13.  x1 := Cos(Angle) * Inner;
  14.  y1 := Sin(Angle) * Inner;
  15.  x2 := Cos(Angle) * Outer;
  16.  y2 := Sin(Angle) * Outer;
  17.  glBegin(GL_LINES);
  18.   glColor4f(R2, G2, B2, A2); glVertex3f(x1, y1, 0);
  19.   glColor4f(R1, G1, B1, A1); glVertex3f(x2, y2, 0);
  20.  glEnd;
  21. End;
  22.  


Die 8 Farbwerte könnt ihr ignorieren, die brauche ich für ein bestimmtes Feature nachher noch. x1 und y1 sind die Koordinaten des ersten Punktes der Linie, x2 und y2 eben der zweite Punkte.

Laut der Mathematik dahinter sollten die Linien immer schön im Kreis je nach Länge der While-Schleife verlaufen, aber sie werden scheinbar nach willkürlichem Winkel gesetzt. Weiss jemand mögliche Fehler?

greetz, Killian

_________________
Die Antwort ist 17, aber wie lautet die Frage?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 19, 2007 23:51 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Die Funktionen erwarten den Winkel im Bogenmaß.

x1 := Cos(Angle*(Pi/180)) * Inner;
y1 := Sin(Angle*(Pi/180)) * Inner;
...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 19, 2007 23:55 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
aber aufpassen, soviel ich weiss, arbeitet opengl, bzw. glRotate wieder mit dem gradmass. mfg

_________________
bester uo-shard: www.uosigena.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 19, 2007 23:59 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Nov 18, 2005 18:28
Beiträge: 26
Damn, du hast natürlich recht.

Ich habe gerade nochmal die Dokumentation der Sinusfunktion in Delphi nachgeschlagen, und da steht natürlich groß "Bogenmaß". Das hatte ich leider vergessen und demnach nicht mit in meine Fehlersuche einbezogen.
Manchmal könnte ich an meiner Rolle als Programmierer zweifeln. :lol:

Danke für's Augen-Öffnen :D

greetz, Killian.

_________________
Die Antwort ist 17, aber wie lautet die Frage?


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


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.007s | 14 Queries | GZIP : On ]