AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Kugel aus Zylinderschichten konstruieren [OpenGL]
Thema durchsuchen
Ansicht
Themen-Optionen

Kugel aus Zylinderschichten konstruieren [OpenGL]

Ein Thema von Robertlu · begonnen am 13. Mär 2004 · letzter Beitrag vom 14. Mär 2004
Antwort Antwort
Robertlu

Registriert seit: 22. Feb 2004
Ort: Potsdam
35 Beiträge
 
Delphi 7 Enterprise
 
#1

Kugel aus Zylinderschichten konstruieren [OpenGL]

  Alt 13. Mär 2004, 16:13
Guten Tag

ich hab mal wieder ne Frage:
und zwar will ich eine Kugel mit OpenGL erzeugen. dazu habe ich mir einen Zylinder mit 2 variablen Radien für oben und untenm programmiert und das in 'ne while-Schleife gepackt, um daraus 'ne Kugel zu bauen. das Problem ist allerdings, das ich nicht weiß, wie ich die radien und die Dicke der Schichten konfigurieren muss, damit daraus'ne Kugel wird.

Gruß Rob
  Mit Zitat antworten Zitat
mandumoal

Registriert seit: 20. Feb 2003
124 Beiträge
 
Delphi 5 Professional
 
#2

Re: Kugel aus Zylinderschichten konstruieren [OpenGL]

  Alt 13. Mär 2004, 17:16
Hallo!

Erstmal, machst du das mit 'reinem' OpenGl oder mit irgendeiner Komponente?

Die Dicke der Schichten musst du selber entscheiden bzw von der Größe abhängig machen, da sie ja nur die Unterteilungen beeinflussen, sprich wie rund deine Kugel dann aussieht.

Wenn ich dich richtig verstanden habe dann möchtest du die Entfernung der (am Beispiel Erde) Breitenkreise von der Gerade durch die Pole wissen, oder?
Wenn das so ist und du die 'Unterteilungsdicke weißt', dann kannst du das mit relativ simpler Trigonometrie ausrechnen. ( 90° Winkel ist immer einer da, eine Gerade ist die Höhe über Mittelpunkt und eine der Radius, die Dritte dann der Radius deines Zylinders)
Ich hoffe, dass ich keinen allzugroßen Quatsch geschrieben habe.

mfg mandumoal
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Kugel aus Zylinderschichten konstruieren [OpenGL]

  Alt 13. Mär 2004, 17:23
Das ergibt dann eine Kugel mit einem Poly-Muster wie die Längen-Breiten-Gerade der Erde. Es ist IMHO schöner eine Kugel aus regelmäßigen Dreiecken zu bauen. Dazu gibt es bestimmt auch irgendwo eine Formel oder einen Algo...
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Mr_T
Mr_T

Registriert seit: 7. Jun 2002
Ort: Eilsum
136 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Kugel aus Zylinderschichten konstruieren [OpenGL]

  Alt 14. Mär 2004, 17:41
Also wie man es mit unterschiedlich dicken Zylindern macht kann ich dir leider auch nicht sagen ...
Ich persönlich verwende für Kugel immer eine kleine Prozedur, welche ich mal im Delphigl-Forum entdeckt habe:


Delphi-Quellcode:
procedure DrawSphere(CX, CY, CZ, Radius : GLFloat; N : Integer);
var
i,j : Integer;
theta1,theta2,theta3 : GLFloat;
X, Y, Z, px, py, pz : GLFloat;
begin
if Radius < 0 then
Radius :=-Radius;
if n < 0 then
n := -n;
if (n < 4) or (Radius <= 0) then
begin
glBegin(GL_POINTS);
  glVertex3f(CX, CY, CZ);
glEnd;
exit;
end;
for j := 0 to n div 2 -1 do
begin
theta1 := J*2*PI/N - PI/2;
theta2 := (J+1)*2*PI/n - PI/2;
glBegin(GL_TRIANGLE_STRIP);
for i := 0 to n do
  begin
  theta3 := i*2*PI/N;
  x := cos(theta2) * cos(theta3);
  y := sin(theta2);
  z := cos(theta2) * sin(theta3);
  px := CX + Radius*x;
  py := CY + Radius*y;
  pz := CZ + Radius*z;
  glNormal3f(X,Y,Z);
  glTexCoord2f(1-I/n, 2*(J+1)/n);
  glVertex3f(px,py,pz);
  X := cos(theta1) * cos(theta3);
  Y := sin(theta1);
  Z := cos(theta1) * sin(theta3);
  px := CX + Radius*X;
  py := CY + Radius*Y;
  pz := CZ + Radius*Z;
  glNormal3f(X,Y,Z);
  glTexCoord2f(1-i/n, 2*j/n);
  glVertex3f(px,py,pz);
  end;
glEnd;
end;

end;
cx, cy und cz sind dabei der Mittelpunkt, der Radius sollte klar sein und "n" gibt an, wie genau das Gebilde einer Kugel angenähert wird (je größer "n", umso besser sieht die Kugel aus, aber umso rechenaufwendiger wird das ganze auch).

Hoffe das hilft dir weiter
Mein neuer, 13 Teiliger Open GL - Kurs (Samples in Delphi):
www.dcw-group.net
Neu! Ein großer Teil der Demos nach Kylix übersetzt!
Neu! Teil 2b: Initialisierung von OpenGL unter Kylix ist fertig!
  Mit Zitat antworten Zitat
Benutzerbild von Seniman
Seniman

Registriert seit: 15. Sep 2003
Ort: Münster
98 Beiträge
 
#5

Re: Kugel aus Zylinderschichten konstruieren [OpenGL]

  Alt 14. Mär 2004, 20:43
Hallo,

wenn du eine Kugel aus mehreren Zylindern zusammensetzten willst:
Ich würde ersteinmal empfehlen eine gerade Anzahl von Zylindern zu nehmen. In der Mitte haben die dann die Dicke, wie die Kugel den Durchmesser hat.
Stell dir nun die Kugel so gedreht vor, dass die Kegel jeweils senkrecht stehen, dass also die Berührflächen der Einzelnen Zylinder Parallel zu einer Tischfläche vor dir wären.
Geh davon aus, dass der Mittelpunkt der Kugel im Koordinatenursprung liegt (0,0,0).
Betrachte nun irgendeinen Punkt, auf der Kugel, sagen wir (x,y,z), dann gilt x^2+y^2+z^2=r^2, wobei r der Radius der Kugel ist. Das folgt aus dem Satz von Pythagoras.
Die Radien der einzelnen Zylinder kannst du nun so ausrechnen: setzte z=0 und y auf den gewünschten Wert. Dann setz das in die Gleichung oben ein, dann erhältst du x und das ist gleichzeitig der Radius des Zylinders an der Stelle.

Grüße
Seniman
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz