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

Aktuelle Zeit: Fr Aug 01, 2025 21:00

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



Ein neues Thema erstellen Auf das Thema antworten  [ 46 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 14, 2004 14:57 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
So. jetzt hääte ich gerne noch die Syntax von glrotate, etwa als glrotate(vertikal,horizontal,par1,par2);

ausserdem: wenn ich bei dem ereignis "nach rechts drehen" inc(rotatehor) aufrufe, kann es dann sein, dass irgendwann rotatehor zu groß wird, um von glrotate verarbeitet zu werden? sprich: muss ich, wenn rotatehor=360 ist, es wieder auf 0 setzen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 15, 2004 00:59 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
zu 1.: Ich hoffe ich hab dich falsch verstanden!? Wenn du die Syntax willst, dann setz mal den Cursor auf glrotate und drück F1. Das solltest du immer machen, wenn fragen zu Befehlen auftauchen. (Oder du guckst in Wiki, auch wenn du momentan dort noch nicht alles findest)

zu 2.: Ja. Das solltest du machen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 15, 2004 11:00 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Und wenn du die Klammer aufmachst, also glRotatef( <-spätestens hier, weißt du was rein muss;) )
Winkel, x-Achse, y-Achse, z-Achse.

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 15, 2004 13:19 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
oh sorry ihr habt ja recht.. aber ich muss erst den umweg über win32 developers reference gehen, weder in der Standard-delphihilfe noch im codevervollstänfiger sind ogl-routinen drin!

verständnisfrage: Winkel ist, wieviel gedreht wird, x,y,z sind vektorenkoordinaten??

OK, gecheckt, x,y,z gibt die achse um die gedreht wird.

PS: im wiki hab ich schon gesucht, aber nicht gefunden
PPS: omg, ihr habt recht, der macht mir tatsächlich codevervollständiger!! :roll:

edit:

x,y,z beschreibt einen ursprungsvektor, oder? aus einem Punkt alein kann man ja keinen Vektor machen, oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 15, 2004 17:22 
Offline
Guitar Hero
Benutzeravatar

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

Cursor auf glRotate (im Quelltext) setzen und F1 drücken. Dann geht er automatisch in die OpenGL Hilfe. Und dort steht auch was x,y,z und Angle bedeutet.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 16, 2004 13:12 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
Tut mir leid, aber dazu muss ich ja wohl erst irgendwie die Hilfedatei in Delphi einbinden, oder? Delphi 7 PE hat auf jeden Fall keine Opengl-hilfe. Nur im Startmenü gehts zur win32 Developer reference. da finde ich aber nur+



Zitat:
The glRotated and glRotatef functions multiply the current matrix by a rotation matrix.

void glRotated(
GLdouble angle,
GLdouble x,
GLdouble y,
GLdouble z
)
void glRotatef(
GLfloat angle,
GLfloat x,
GLfloat y,
GLfloat z
)

Parameters

angle

Specifies the angle of rotation, in degrees.

x, y, z

Specify the x, y, and z coordinates of a vector, respectively.
Remarks

The glRotate function computes a matrix that performs a counterclockwise rotation of angle degrees about the vector from the origin through the point (x, y, z).
The current matrix (see glMatrixMode) is multiplied by this rotation matrix, with the product replacing the current matrix. That is, if M is the current matrix and R is the translation matrix, then M is replaced with M·R.
If the matrix mode is either GL_MODELVIEW or GL_PROJECTION, all objects drawn after glRotate is called are rotated. Use glPushMatrix and glPopMatrix
to save and restore the unrotated coordinate system.

The following functions retrieve information related to the glRotate function:
glGet with argument GL_RENDER_MODE
glGet with argument GL_MATRIX_MODE
glGet with argument GL_MODELVIEW_MATRIX
glGet with argument GL_PROJECTION_MATRIX
glGet with argument GL_TEXTURE_MATRIX


Errors

GL_INVALID_OPERATION is generated if glRotate is called between a call to glBegin and the corresponding call to glEnd.

See Also

glMatrixMode, glMultMatrix, glPushMatrix, glScale, glTranslate



Und da ein Vektor( ein Pfeil) ja aus 2 Punkten definiert werden muss, man aber nur einen Punkt an glrotate übergibt, muss ein zweiter Punkt vordefiniert sein, und dieser Punkt ist logischerweise, da der einzige "besondere" Punkt im Koordinatensystem, der Nullpunkt/Ursprungspunkt. Also wird der Vektor vom Nullpunkt nach 3DPoint(x,y,z) laufen, und die Achse bilden, um die gedreht wird.

UNd wenn ich da falsch denke, dann schreibt es bitte hier rein, und wenn ihr andere opengl-hilfedateien habt, dann postet mir bitte eine! Bitte!

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 16, 2004 15:33 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
1. ein vektor besteht aus einen anfangspunkt 0,0,0 und einem endpunkt x,y,z man gibt also nur einen an.

2. glrotatef(
angle = rotationwinkel;
x,y,z = vektor für die drehung je länger er ist umso stärker wirkt sich angel aus.
);

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 19, 2004 14:51 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
soweit bin ich auch schon. jetzt muss ich nur noch rauskriegen, wie ich es so hinbekomm, dass ich die kamera wie aus der egoperspektive bewegen kann. aber das find ich schon.

edit: ich habs geschafft....

einfach:
glrotatef(rotation,0,1,0)

dann dreht man sich "rotation grad " um seine eigene höhenachse!!

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Ich mal wieder...
BeitragVerfasst: Di Sep 21, 2004 14:06 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
Nachdem ich mich vor lauter offenen Arrays und einer chaotischen Programmstruktur total entnervt habe, hab ich alles gelöscht und noch mal von vorn angefangen. Ich mach bis jetzt nur Dreiecke, der einfachheit halber, und habe dazu eine paintbox gemacht(größe: 500 mal 500) auf der ich ein dreieck zeichne, wenn ich das dritte,neunte, ..., n*3 te mal in die paintbox geklickt habe, übergeb ich die gesammelten daten an die struktur
Code:
  1. type T3dPoint = record x,y,z:integer; end;
  2.      TTriangle= record A,B,C:T3dPoint;end;
  3.  
  4. //......
  5.  
  6.  ATris: record
  7.    content:array[0..1023] of TTriangle;
  8.    count:integer;
  9.  
  10.  
,

wobei ich mangels z-daten z:=0 setze.

Gerendert wird mittels
Code:
  1.  
  2. gltranslatef(0,0,zoom);
  3.  
  4. glbegin(gl_triangles);   //!!
  5.  
  6. {glcolor3i(255,0,0);}
  7. for i:=0 to ATris.count do
  8.  begin
  9.   glvertex3i(atris.content[i].A.x,atris.content[i].A.y,atris.content[i].A.z);
  10.   glvertex3i(atris.content[i].B.x,atris.content[i].B.y,atris.content[i].B.z);
  11.   glvertex3i(atris.content[i].C.x,atris.content[i].C.y,atris.content[i].C.z);
  12.  end;
  13. beep;
  14. glend();                 //!!
  15.  


Das beep zur überprüfung, ob er das auch wirklich macht.

Es beept aber nicht, und ich sehe nichts, was ist also falsch?


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

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 21, 2004 16:05 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
Wo dein Problem ist kann ich dir zwar nicht sagen,
aber ein beep zum debuggen zu benutzen ist schon ziemlich extrem (noch schlimmer als Showmessage ;) )
setzte einfach nen breakpoint ans ende der Schleife und schau ob er den ausführt oder nicht.

Eventuell stimmt auch einfach die betrachtungsposition nicht so das du das Zeug hinter der Kamera renders...
Stimmt die ATris.Count variable? Ist sie vielleicht einfach 0?
Warum benutzt du eigentlich nicht einfach dynamische Arrays?
Da kannste dir das mit dem Count sparen und nimmst einfach High(ATris)...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 21, 2004 16:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Ohne mir den ganzen Thread durchgelesen zu haben kann ich dir so sagen das es mit einer Paintbox nicht klappt da die kein Window Handle hat.

Oder vestehe ich dich jetzt falsch, und hätte doch den ganzen Text lesen müssen? :wink:

Zitat:
aber ein beep zum debuggen zu benutzen ist schon ziemlich extrem (noch schlimmer als Showmessage Wink )
setzte einfach nen breakpoint ans ende der Schleife und schau ob er den ausführt oder nicht.

Wie wäre es mit:
Code:
  1.  
  2. raise Exception.Create('Es geht <!-- s:D --><img src=\"{SMILIES_PATH}/icon_biggrin.gif\" alt=\":D\" title=\"Very Happy\" /><!-- s:D --> ... ...nicht mehr <!-- s:( --><img src=\"{SMILIES_PATH}/icon_sad.gif\" alt=\":(\" title=\"Sad\" /><!-- s:( --> ');
  3.  


Zu low() und heigh() würde ich dir aber auch raten.
MfG
IFlo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 21, 2004 20:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Oder du zeichnest es in der falschen Reihenfolge?! :)
Ich sag nur CW und CCW (oder wie war das :D)

_________________
www.audi32.de


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

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nochn Tipp am Rande...count gibt garantiert die Anzahl der Elemente zurück. Wenn du aber bei 0 anfängst, dann ist der Index an der Stelle count bereits hinter dem Array. Ein -1 hilft da ab...
Kommt ein Fehler?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 22, 2004 15:27 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
ES RENDERT! Hat es auch von Anfang an getan. Allerdings etwas verdreht, und ich sehe erst etwas, wenn ich so weit zurückgehe(gltranslate(0,0,-x)), dass das zeug schon fast wieder hinter der far clipping verschwindet. das beep ist jetzt übrigens weg ;) .

Wie kann ich denn das far-clipping höhersetzen bzw. warum muss ich so weit weg zoomen? Ausserdem zeichnet er alles um 180° gedreht und dann noch mal an der senkrechten Achse gespiegelt... Inzwischen hab ich glrotate(180,0,1,0), dann hab ichs wenigstens nur noch gespiegelt.

CW und CCW??

Und zu -1: Ich weiss auch nicht, warum ich keinen Fehler kriege... :)
Wahrscheinlich gibt er bei dem Dreieck, bei dem alle koords 0 sind gar keinen Fehler, sondern ignoriert es einfach.

PS: Kennt jemand einen Link zu einer Sonderzeichen-Char-Tabelle? Also wie ich im onkeypress-ereignis z.B. die linke pfeiltaste identifiziere? bei esc weiss ichs schon, das ist #27.

Zu den weiteren Posts: Ich rendere in die FOrm, hab auf der aber einige Objekte verteilt(Panel->Paintbox und eine memo-box)

Das mit low und high hab ich noch gar nicht gewusst. aber um ein neues tri zu machen muss ich dann immer erst setlength machen, das gibt mir dann hundert laufzeitfehler... ich bin halt noch einsteiger. aber das programm läuft zurzeit absolut absturzfrei!

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 22, 2004 15:44 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
luketheduke hat geschrieben:
PS: Kennt jemand einen Link zu einer Sonderzeichen-Char-Tabelle? Also wie ich im onkeypress-ereignis z.B. die linke pfeiltaste identifiziere? bei esc weiss ichs schon, das ist #27.

Delphi Hilfe unter "Virtuelle Tastencodes"

luketheduke hat geschrieben:
Das mit low und high hab ich noch gar nicht gewusst. aber um ein neues tri zu machen muss ich dann immer erst setlength machen, das gibt mir dann hundert laufzeitfehler... ich bin halt noch einsteiger. aber das programm läuft zurzeit absolut absturzfrei!

Du erhöhst einfach jedesmal bevor du ein neues Tri hinzufügst die länge des Arrays um 1...
setlength(ATris,length(ATris)+1);
und die Werte für das neuste fügst du danach einfach über ATris[High(Atris)].xyz := ... hinzu
für die for schleife ists dann einfach : for := 0 to High(ATris) do
da kann nicht viel schiefgehen :)


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


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