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

Aktuelle Zeit: Fr Jul 18, 2025 19:42

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Zylinder zwischen zwei Punkten
BeitragVerfasst: Fr Apr 09, 2004 01:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
Guten Abend,
ich hab mal wieder ein mathematisches Problemchen :mrgreen:
Ich möchte einen Zylinder mit dem Radius r zwischen den Punkten p1 und p2 zeichnen.
Ich könnte jetzt ausrechnen wie lang der Zylinder ist und wie stark ich ihn rotieren müsste, aber das halte ich für die uneleganteste Methode.
Es muss ja auch ohne Spielerei an der Matrix gehen. War da nicht irgendwas mit Normalen ausrechnen? Naja, mir fehlt das mathematische Wissen halt, Vektorrechnung macht man bei uns sowieso leider erst in der 12...
Habt ihr ne Idee? :?:

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 09, 2004 01:44 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Ich möchte einen Zylinder mit dem Radius r zwischen den Punkten p1 und p2 zeichnen.

-> Was meinst du damit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 09, 2004 01:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
Eigentlich etwas ähnliches wie das hier:
viewtopic.php?t=2229&highlight=
nur anstelle von Flächen, jetzt Rohre, Zylinder.

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 09, 2004 02:11 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Deine Bilder in dem Threat sind down.
Wie meinst du das nun? Eine der beiden Möglichkeiten, wie im angehängten Bild? Es gibt ungefähr unendlich viele Möglichkeiten, einen Zylinder zwischen zwei Punkten zu platzieren.


Dateianhänge:
Unbenannt.GIF
Unbenannt.GIF [ 1.89 KiB | 12143-mal betrachtet ]
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 09, 2004 03:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
Die Obere ist genau das was ich meine.
Außerdem, da sind doch Bilder im Thread...
files/test11.gif <--- da z.B.!

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 09, 2004 10:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Da du ja sowohl Start- als auch Endpunkt hast, sollte das recht einfach gehen. Da brauchste keine Vektoren- und keine Matrixberechnungen, sondern einfach nur via Pythagoras die 3-Winkel für alle Achsen zwischen Start- und Zielpunkt auszurechnen und dann deine Vertices entsprechend von Hand per Sinus/Cosinus zu rotieren. Anhand der Differnez zwischen den zwei Punkten kannste ja den Kippwinkel des kompletten Zylinders errechnen, und dann musst du halt die Punkte des Zylinders (jetzt im Bezug auf den Boden/die Decke) entsprechend ihrer Entfernung zum Zentrum rotieren.

P.S. : Habe auch nie Vektoren oder Matrizen in der Schule gemacht. Wenn man 3D macht, dann schnappt man sich halt ein passendes Buch und bringts sich selbst bei. Ist gar nicht mal so schwer.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 09, 2004 15:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Wie wäre es wenn du die Modelview Matrix genau so einstellst das sich der Punkt 1 genau über dem Punkt 2 befindet. Dann könntest du mit Hilfe von Sin und Cos die Punkte auf den Oberen und unteren Kreis ermitteln und verbinden. Ich weis ja nicht was einfacher ist?
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: Fr Apr 09, 2004 15:30 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
Also, wenn ich mich bei meinen Zeichnungen nicht total vertan habe, sind das die "Kippwinkel":

Code:
  1.  
  2.  dir.x:=p2.x-p1.x;
  3.  dir.y:=p2.y-p1.y;
  4.  dir.z:=p2.z-p1.z;
  5.  rot.x:=arctan(dir.y/dir.z);
  6.  rot.y:=arctan(dir.z/dir.x);
  7.  rot.z:=arctan(dir.y/dir.x);
  8.  


Naja, mit der Rotation tuts sich dann schon etwas schwerer, hab mir nochmal das Mathe Tutorial hier angeschaut und daraus geht, wenn ich mich nicht irre, für eine Rotation um die Z Achse folgendes hervor:
Code:
  1.  
  2.  vec.x:=vec.x*cos(rot.z)-vec.y*sin(rot.z);
  3.  vec.y:=vec.x*sin(rot.z)+vec.y*cos(rot.z);
  4.  


Naja das funktioniert irgendwie nicht so ganz pralle:

Code:
  1.  
  2.   glbegin(gl_points);
  3.    vec.x:=0;
  4.    vec.y:=0.25;
  5.    vec.z:=0;
  6.    rot.z:=ctime/1000000;
  7.    vec.x:=vec.x*cos(rot.z)-vec.y*sin(rot.z);
  8.    vec.y:=vec.x*sin(rot.z)+vec.y*cos(rot.z);
  9.    glvertex3fv(@vec);
  10.   glend;
  11.  


=> Der Punkt sollte eigentlich einen Kreis "beschreiben", was er allerdings nicht tut (er beschreibet, naja, einen runden komischen Graphen) , ich vermute mal ich wende die Formel nicht richtig an oder ich hab mich irgendwo verhaspelt ...
Danke schonmal für eure Hilfe, hat mich aber leider nicht viel weitergebracht, das mit Winkeln ausrechnen und so hatte ich eigentlich schon vorher im Kopf.

mfg las

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 09, 2004 20:30 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Zitat:
Ich könnte jetzt ausrechnen wie lang der Zylinder ist und wie stark ich ihn rotieren müsste, aber das halte ich für die uneleganteste Methode.


Die andere Möglichkeit wäre, durch die beiden Punkte und den Differenzvektor als Normalvektor zwei Ebenen zu definieren, und auf diesen deine Kreise zu tesselieren und zu verbinden - da ist die obere Methode doch um einiges einfacher.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 10, 2004 00:02 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Mars hat geschrieben:
Die andere Möglichkeit wäre, durch die beiden Punkte und den Differenzvektor als Normalvektor zwei Ebenen zu definieren, und auf diesen deine Kreise zu tesselieren und zu verbinden - da ist die obere Methode doch um einiges einfacher.

Das wäre eigentlich gar nicht so ungeschickt...Aber bis man das wirklich für einfacher hält, muss man über Ebenen einiges gelernt haben ;-)


Zuletzt geändert von Delphic am Di Jul 14, 2009 08:48, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 10, 2004 14:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Ich fand das Thema zimlich interessant und habe ein kleines Programm dazu geschrieben.
MfG
IFlo


Dateianhänge:
Dateikommentar: Hier das Programm inklusive Quellcode.
ZuPunktschauen.zip [96.79 KiB]
511-mal heruntergeladen
Screenshot.jpg
Screenshot.jpg [ 28.77 KiB | 12041-mal betrachtet ]

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 07, 2004 09:38 
Offline
DGL Member

Registriert: Di Sep 28, 2004 15:46
Beiträge: 54
weils hier gerade so schön ins Thema passt. Das mit dem Zylinder zeichnen bekomme ich ja hin. Ich suche nun eine Möglichkeit bei den Zylindern die verdeckten Kanten auszublenden. Bei meinen anderen Objekten zeichne ich die einfach zweimal, einmal als fill und dann als line, aber das funktioniert bei Zylindern natürlich nicht...

Hier mal ein Beispiel, wie ichs meine...
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 07, 2004 13:42 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Also, wenn ich das richtig sehe, soll das ganze dann so aussehen wie das rechte Bild, oder?
Dann würde ich das ganze per Frustum-Culling zeichnen. Ist eleganter und spart sogar noch
Füllrate (?).
Einfach vor die Draw-Prozedur folgendes setzen:
Code:
  1.  
  2. glEnable(GL_CULL_FACE);
  3. glFrontFace(GL_CCW);
  4. //oder GL_CW
  5.  
  6. ZeichneObjekt;
  7.  
  8. glDisable(GL_CULL_FACE);
  9.  

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 07, 2004 14:28 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich glaube er möchte trotzdem die Faces haben, aber nur die Umramungslinien.
Das was du suchst ist die Silhouette deines Körpers. Die grigst du über die Normalen Raus.

Jeweils die Kante, die zwischen zwei Flächen liegt, deren Winkel zwischen Normalen der Fläche und Linie(Betrachter<->Körper) einmal > 90° und einmal <=90° sind sind Kanten, die du nachzeichnen musst.

SoS hat hierzu bereits einmal was geschrieben, im zusammenhang im Schatten. Bemüh doch mal die Forumssuche mit Schatten und Silhouette. (Is noch gar net so lange her.)

EDIT: Ich mach mal nen Wiki Deadlink dazu. Eventuell füllt das mal jemand aus.

Ach ja...Im Wiki (unter Techniken&Algorithmen) war ein Artikel von SoS bezüglich Schatten. Vielleicht steht da auch noch was.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 07, 2004 14:52 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich habe gerade hier einen Wikibeitrag verfasst.

Eventuell hilft der weiter. 8)

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


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 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.013s | 17 Queries | GZIP : On ]