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

Aktuelle Zeit: Sa Jul 05, 2025 13:08

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Okt 26, 2011 09:30 
Offline
DGL Member

Registriert: So Okt 16, 2011 12:25
Beiträge: 4
Programmiersprache: Java, C
Hallo zusammen

Ich muss (noch) folgende schwarze Fläche malen und bin mir nicht sicher wie ich das am schlausten anfange. Die Kugel ist nicht das Problem sondern die Kurve. Meine Idee: 2 Bezier Kurven und dann alle zwischenliegenden Punkte ausfüllen? Oder gehts einfacher? Habe bisher noch nicht mit Bezier Kurven in OpenGL gearbeitet.

Danke und Grüße

Bild

Uploaded with ImageShack.us


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Okt 26, 2011 18:34 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Also, Bézierkurven sind an sich nur ein Polynom 3. Grades. Das nur ist vielleicht etwas übertrieben, denn letztendlich reicht das schon, damit der Betrag nicht (analytisch) integrabel ist.

Ich hatte hier schonmal ein ein wenig was zu Bézierkurven geschrieben.

Prinzipiell müsstest du die Kurve in Stückchen teilen und dann ein Polygon daraus bauen (das dann ggf. noch triangulieren). Dazu würde ich die linke und die rechte Kurve „ablaufen“ und in regelmäßigen Abständen. Leider hängt es von der Kurve ab, wie klein deine Schritte sein müssen, damit es „rund“ wirkt. Was ich oben sagte bedeutet nämlich im Klartext, dass du keine einfache Funktion finden kannst, die von „Länge der Kurve“ auf „Parameter t“ abbildet, also du kannst nicht sagen: Ich möchte den Punkt, der 3cm vom Anfang der Kurve entfernt ist, ohne großen Rechenaufwand zu betreiben.
Ich habe vor einiger Zeit dann mal Code (tt3d/master /modules/geometry/geometry.pas #L660) geschrieben, um die Länge der Kurve zu approximieren. Für Kurven, die sich nicht schneiden, bzw vorallem nicht zu dicht an sich selber herankommen (sowas wie ein kleines „e“ z.B. kommt bei der rechten Bogenspitze zu dicht an sich selbst als dass der Code noch sicher gut wirken würde).
Anstatt da die Länge aufzuaddieren, könntest du die Koordinaten des Punktes nehmen und zu einer Liste hinzufügen. Das machst du mit beiden Kurven und daraus kannst du dir dann ein Polygon bauen (entweder, indem du die einfach nacheinander als Vertices hinzufügst oder, etwas schlauer, interleaved mit Triangle Strip. Eventuell musst du da aber aufpassen, dass du bei beiden Kurven gleichviele Punkte hast).

Viel Erfolg!

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Okt 29, 2011 17:31 
Offline
DGL Member

Registriert: So Okt 16, 2011 12:25
Beiträge: 4
Programmiersprache: Java, C
Ich danke vielmals :)!!


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Okt 30, 2011 13:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
2. Möglichkeit ist es über ein Fragmentshader und 2 Triangle pro Bezierkurve zu rendern. Dieser Ansatzt ist Pixelferfekt benötigt aber neben den Shader mit ner approximation noch ein Preprocess, um die Stützpunkte und Kontrollpunkte in Eye Space zu transformieren.
Diese Technik wurde von Microsoft entwickelt und im US-Markt Patentiert. MS nutzt es für das Rendern von SVG und TrueTypeFonts über die GPU, ohne Trianglemeshes zu tesselieren oder von der Auflösungs abhängig zu sein.
Erfinder der Endgültigen Lösung ist Hugues Hoppe von Microsoft Research Programm, hier die Seite http://research.microsoft.com/en-us/um/people/hoppe .

http://dl.dropbox.com/u/1672275/Bildsch ... t-Demo.png <- das hab ich vor längerer Zeit mal damit gemacht

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


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 » Einsteiger-Fragen


Wer ist online?

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