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

Aktuelle Zeit: Mi Jul 16, 2025 21:32

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



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Frage zu Pylogon und Blend
BeitragVerfasst: Mi Mär 08, 2006 03:03 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

folgendes Problem :

Wenn man mit diesen Koordinaten ( jeweil x:y ) :

54,14:11,26
54,45:12
54,92:12,85
54,92:14,36
54,13:14,26
54,13:14,2
53,99:14,24
53,93:14,23
53,9:14,27
53,62:14,3
53,58:14,34
53,55:14,39
53,32:14,42
53,25:14,44
53,05:14,34
52,97:14,17
52,85:14,15
52,75:14,39
52,59:14,6
52,44:14,57
52,3:14,59
52,25:14,7
52,15:14,69
52,08:14,75
51,94:14,72
51,84:14,62
51,63:14,77
51,57:14,75
51,5:14,84
51,48:14,93
51,42:14,97
51,3:15,04
51,07:14,95
50,82:14,8
50,82:14,7
50,83:14,62
50,92:14,62
50,9:14,55
50,98:14,55
51:14,4
51,05:14,32
50,97:14,27
50,92:14,4
50,87:14,32
50,8:13,95
50,74:13,9
50,74:13,79
50,72:13,6
50,6:13,47
50,63:13,4
50,52:13,17
50,49:13,05
50,45:13,04
50,42:12,95
50,45:12,84
50,4:12,54
50,19:12,35
50,32:12,18
50,26:12,1
50,43:11,25
51,35:10,48
51,47:10,49
51,82:11,14
52,38:11,07
54,14:11,26

ein Pylogon darstellt hat man den Effekt das das Pylogon an manchen Stellen irgendwie überlagert wird.
Eigentlich sollte das 1. nicht so sein, laut WIKI und 2. wie kann ich das wegbekommen das die Farbe dunkler wird, wenn sich ( sozusagen ) diese Farbe überlagert.
Kann man das mit bestimmten Parametern von glBelndfunc einstellen ?
Ich kann doch nicht die ganzen optionien durchprobieren.
Vielleicht weiss das jemand.
Zur verdeutlichung häng ich mal ein Bildchen dran.

Matthias


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 08, 2006 08:47 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also dein zweites Problem hat etwas mit dem ersten zu tun und verschwindet automatisch, wenn du das erste Löst. Und da sind wir auch schon beim Hauptproblem.

Es gibt zwei Polygonarten.
- kokave Polygone (sind einfache Polygone wo kein Winkel größer als 180° ist)
- konvexe Polygone (dabei sind einige Winkel größer als 180°)

OpenGL kann nur die Konkaven Polygon direkt darstellen. Bei den anderen Polygonen kann es sein, dass du beim Rendern plötzlich die Richtung welchselst. Damit bekommst du dann eine falsche Darstellung. Der Rand dürfte an diesen Stellen aber auch nicht ganz stimmen.

So viel zum einfachen Teil. ;-) Du musst jetzt her gehen und dein Polygon in einzelne Dreiecke zerlegen. Ein ansatzt dafür wäre dein Polygon so auseinandere zu schneiden, dass du nur noch konkave Polygone bekommst und diese kann man dann recht einfach in Dreiecke zu zerlegen. Aber insgesammt ist das ein gehöriger Aufwand.

In meine in der Glu wäre auch ein mechanismuss eingebaut um Polygone entsprechend zu zerlegen. Folgendes sollte dir da ein bisschen helfen. Damit kannst du wohl ein Objekt erstellen dem du CallBacks zuweist die dann bei der Tesselierung aufgerufen werden. Du solltest das Ergebniss dabei aber auf jeden Fall in einer DL oder so etwas abspeichern, da der Vorgang ein bisschen rechenaufwändig ist. Vor allem bei solche großen Polygonen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 08, 2006 12:51 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallol,

naja danke für die Erklärung.
Wies gehen soll weiss ich nich nicht, weil wiedermal nur fehler kommen, aber egal

Bye
Matthias


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 08, 2006 12:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Habe das bisher selber noch nicht gemacht aber zu Fehlern im Allgemein kann ich nur sagen. Was wäre hilfreich, wenn du einen Fehler beim Namen nennen würdest. Wenn du zu deinem Werkstattmeister sagen würdest an deinem Auto stimmt etwas nicht, dass würde der dich auch nur doof anschauen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 08, 2006 13:14 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

na das hab ich doch gemacht, was willst Du denn noch wissen.
Hab doch oben ALLES geschrieben um was es geht, sogar ein Bildchen.

Ich hab aber hier ein gutes Bsp. gefunden.
Solltet Ihr vielleicht mal mit in die WIKI nehmen.
Ist besser erklärt als dort .

Matthias


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 08, 2006 13:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
STF-DIR hat geschrieben:
Wies gehen soll weiss ich nich nicht, weil wiedermal nur fehler kommen, ...

Das war darauf bezogen. Man könnte den Eindrück bekommen du hättest es versucht aber einen Fehler bekommen. Und ein Fehler könnte ein Fehler bei der Kompilierung sein. Oder Einer zur Laufzeit und dann gibt es reichlich Fehlertypen die alle samt eine andere Bedeutung haben und den Fehler in der Darstellung kann man auch noch als Fehler bezeichnen.

Und wenn du so ein Problem hast und ernsthaft eine Antwort darauf haben willst dann solltest du ein bisschen genauer werden. Wir wissen nicht was bei dir los ist und können dir durch die Beschreibung "ein Fehler" nicht weiter helfen.

PS: Das mit dem Bild im ersten Posting war eine sehr gute Idee. So hat man wenigstens gleich gesehen wo das Problem liegt. Ändert aber nichts an der Tatsache, dass das Folgeposting entsprechend dürftig war.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 08, 2006 17:03 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

ganz einfach:

Ich habe wie Du gesagt hast in der Wiki gesucht.
Hab dort auch ein Bsp gefunden.
Dann hab ich das Bsp GENAU WIE ES IST übernommen, also CP.

Danach geht erstmal gar nichts.

Genau das ist es aber was ich schonmal geschrieben habe.
Die Beispiele sind ja schön ind der Wiki, aber da fehlt es hier und da.
Z.B. kann man ja nicht davon ausgehen das ein Anfänger wie ich weiss was man da für andere Variablen noch braucht und wie diese deklariert werden müssen.
Weiterhin steht in der WIKI das BSP so :

Code:
  1.  
  2.         gluTessCallback(tobj, GLU_BEGIN, glBegin);
  3.         gluTessCallback(tobj, GLU_VERTEX, glVertex3dv);
  4.         gluTessCallback(tobj, GLU_END, glEnd);
  5.         gluBeginPolygon(tobj);
  6.            gluTessVertex(tobj, v, v);
  7.            ...
  8.         gluEndPolygon(tobj);
  9.  


Später .... viel später hab ich endlich rausgefunden das das falsch ist, zumindest teilweise.

Code:
  1.  
  2.         gluTessCallback(tobj, GLU_BEGIN, @glBegin);
  3.         gluTessCallback(tobj, GLU_VERTEX, @glVertex3dv);
  4.         gluTessCallback(tobj, GLU_END, @glEnd);
  5.         gluBeginPolygon(tobj);
  6.            gluTessVertex(tobj, v, v);
  7.            ...
  8.         gluEndPolygon(tobj);
  9.  


wäre schonmal besser.

Weiterhin das hier :

gluTessVertex(tobj, v, v); ?????????????????????ß

Was bitte soll denn ein anfänger damit anfangen ?
Also bei gluTessVertex nachgesehen.

Dort findet man dann das hier :

Code:
  1.  
  2. gluTessBeginPolygon(tess, NULL);
  3.   gluTessBeginContour(tess);
  4.     gluTessVertex(tess, v1, v1);
  5.     gluTessVertex(tess, v2, v2);
  6.     gluTessVertex(tess, v3, v3);
  7.     gluTessVertex(tess, v4, v4);
  8.   gluTessEndContour(tess);
  9. gluNextContour(tess, GLU_INTERIOR);
  10.   gluTessBeginContour(tess);
  11.     gluTessVertex(tess, v5, v5);
  12.     gluTessVertex(tess, v6, v6);
  13.     gluTessVertex(tess, v7, v7);
  14.   gluTessEndContour(tess);
  15. gluTessEndPolygon(tess);
  16.  


Aber daraus wird man auch nicht wirklich schlauer .
Versucht Euch mal in einen wirklichen Anfänger zu versetzen !

Dann kann man nicht wirklich daraus schlauer werden oder ?

Hier nun aber noch die richtige Lösung, gefunden in einem anderen Forum durch Zufall :

Code:
  1.  
  2. const  
  3.  N = 100;  
  4. var  
  5.  GLArrayd3: TGLArrayd3;  
  6.  GluObj: PGLUtesselator;  
  7.  myPolygon: TGLUInt;  
  8.  myPointList: array of TGLArrayf3;  
  9.  I: Integer;  
  10. begin  
  11.   // Definition eines nicht-konvexen Objektes  
  12.   SetLength(myPointList, N);  
  13.   for I := 0 to N-1 do  
  14.   begin  
  15.     myPointList[I][0] := cos(2*pi*I/N)*(1+cos(2*pi*I/N*8)/4);  
  16.     myPointList[I][1] := sin(2*pi*I/N)*(1+cos(2*pi*I/N*8)/4);  
  17.     myPointList[I][2] := 0;  
  18.   end;  
  19.  
  20.  
  21.   // Display-List erstellen  
  22.   myPolygon := glGenLists(1);  
  23.   glNewList(myPolygon, GL_COMPILE);  
  24.  
  25.  
  26.   // Tesselierung in konkave Polygone  
  27.   GluObj := gluNewTess;  
  28.   gluTessCallback(GluObj, GLU_TESS_VERTEX, @glVertex3fv);  
  29.   gluTessCallback(GluObj, GLU_TESS_BEGIN, @glBegin);  
  30.   gluTessCallback(GluObj, GLU_TESS_END, @glEnd);  
  31.  
  32.  
  33.   gluTessBeginPolygon(GluObj, nil);  
  34.   gluTessBeginContour(GluObj);  
  35.   for I := 0 to length(myPointList)-1 do  
  36.   begin  
  37.     GLArrayd3[0] := myPointList[I][0];  
  38.     GLArrayd3[1] := myPointList[I][1];  
  39.     GLArrayd3[2] := myPointList[I][2];  
  40.     gluTessVertex(GluObj, GLArrayd3, @myPointList[I]);  
  41.   end;  
  42.   gluTessEndContour(GluObj);  
  43.   gluTessEndPolygon(GluObj);  
  44.   glEndList;  
  45.   gluDeleteTess(GluObj);  
  46.  
  47.  
  48.   // Das Objekt zeichnen...  
  49.   glCallList(myPolygon);
  50.  
  51.  


Vielleicht mal in die WIKI aufnehmen.

Matthias[/code]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 08, 2006 17:31 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

Hier mal das Ergebnis des ganzen Aufwands :-)

Matthias


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 09, 2006 00:11 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Lass deinen Account fürs Wiki freischalten (wenn er es nicht schon ist) und schreib eine Anleitung. Das ist eine Art kurz-Tutorial, wo vorgestellt wird wie was funktioniert.
Das ganze kannst du hier unter dem Titel "Polygone tesselieren" veröffentlichen: Techniken_und_Algorithmen unter "Sonstiges"

Schreib einfach den Text hinternander weg. Hier ist auch noch eine Erklärung wie Wikicode funktioniert. Das kapiert man in 5 Minuten. ;)
DGL_Wiki:Editierhilfe


Wenn du das tust hilfst du der ganzen Community weiter. Alles wissen wir nämlich auch nicht. Aber jedes neue Pusselstück hilft uns weiter. Und diese Stücken können von jedem kommen. Das Wiki ist der Ort wo sich das alles niederschlägt und konzetriert.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 09, 2006 11:02 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

jap, werd ich auf jeden Fall machen. Ich denke nur so wird die Wiki besser.
Jedoch muss ich erst mal noch so einige Erfahrungen sammeln damit ich da nicht irgendwelchen blödsinn schreibe.

Matthias


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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 | 16 Queries | GZIP : On ]