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

Aktuelle Zeit: Di Mai 14, 2024 19:10

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Rational B-Splines - Iges Entity 126
BeitragVerfasst: So Apr 21, 2013 18:38 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Hallo,

ich versuche aus dem CAD Format Iges den Entity Typ 126 = rational B-Splines in meinen Viewer zu importieren.
Dies gelingt mir aber nicht zu 100%.
Hier die Original Kurve (blau)
Bild
Und hier das was ich hinbekomme:
Bild
Wie man sieht ähnelt mein Ergebnis nur und liegt nicht an den anderen Elementen an.

Nun zum Iges Format und was ich bisher mache damit:

der Entity Typ 126 hat einen Parameter Datenbereich, aus dem ich mir die Kontrollpunkte hole:
Bild

diese rendere ich dann mit
Code:
  1.  
  2. procedure TIgesCurve.drawme;
  3. var
  4.   i:integer;
  5.   werte:integer;
  6. begin
  7.   werte := length(fctrlpts);
  8.   glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, werte,@fctrlpts[0].vx);  // Kontrollpunkte definieren
  9.   glEnable(GL_MAP1_VERTEX_3);                                     // "Karte" einschalten ?
  10.  
  11.   glColor3f(0.0, 0.0, 1.0);                                       // Die Kurve soll blau sein
  12.   glBegin(GL_LINE_STRIP);                                         // LineStrip starten
  13.       for i := 0 to 30 do
  14.           glEvalCoord1f(i/30);                                    // Wertet die Bezier Kurve aus..
  15.   glEnd();                                                        // Stop Drawing a Line Strip
  16.   glDisable(GL_MAP1_VERTEX_3);                                    // "Karte" ausschalten.. ?
  17. end;
  18.  
  19.  


Das führt zu dem oben gezeigten Ergebnis. Leider nicht genau die Kurve wie sie im Original CAD System erstellt wurde.
Hat jemand eine Idee was mit den Knot Sequences gemeint sein könnte?
die Werte darin sehen für diese kurve so aus:
Zitat:
1. - 6. : 0.00
7. - 9. : 189.73
10. - 15. : 379.45


Bei anderen kurven die ich ausprobiert habe waren die werte 1-6 auch immer 0.
Kurven bei denen die restlichen werte alle identisch(also ausser 1-6 was ja immer 0.0 zu sein scheint) waren zeichnet meine vorgehensweise exakt nach, daher vermute ich das ich irgendwas mit diesen werten anstellen muß.

Da mich das jetzt den gesamten Sonntag gekostet hat wäre ich für jeden Hinweis oder Hilfe dankbar!! Wenn ihr mehr Informationen braucht kann ich auch den Rest der Iges Definition bereitstellen, wollte den Post nur nicht zu lang machen.

Danke schonmal

Wolfgang


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 21, 2013 21:01 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Am besten zeichnest Du in beide Bilder noch die Kontrollpunkte mit ein und verbindest diese der Reihe nach mit einer geraden Linie. Evtl. zeigt sich dann schon was - z.B. ob eine der Kurven interpoliert und vielleicht die Andere an Tangenten anliegt. Dann würde ich noch dafür sorgen, dass die Bilder gleich skaliert sind, so daß Du die Kreise übereinanderlegen kannst.

Ansonsten wirkt das obere Bild wie eine Parabel, das untere irgendwie nicht... Stimmt der Grad der Polynome?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 21, 2013 21:25 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
das ist ein problem
in dem cad programm sehe ich die kontrollpunkte überhaupt nicht, ich male einfach die kurve.. ich wüsste auch nicht wie ich sie native sichtbar machen soll..
beim export als iges bekomme ich halt die kontrollpunkte... ich könnte sie händisch im CAD reinmalen über die koordinaten aus dem iges file...

das mit der Parabel ist zufall.. die abweichung taucht bei jeder etwas komplexeren kurve auf.

den grad der polynome kenne ich ehrlich gesagt nicht, in der iges spezifikation steht nur ein Wert M: Degree of basis functions und der scheint immer 5 zu sein, bei den kurven die ich bisher getestet habe.

Edit:

ok hab die kontrollpunkte eingetragen (im CAD von hand abgeschrieben aus dem Iges file, weil ich die dort sonst nicht sichtbar machen kann)
ich kann da jetzt nichts erkennen.. ihr?

Bild

links die falsche kurve im viewer, rechts die richtige im CAD.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 22, 2013 19:36 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Hm, hilft leider nicht soviel wie ich gehofft habe. Schaut sehr danach aus als stimmt die Polynombasis nicht... Das ist auch nicht allzufern, weil wie Du oben schreibst basiert dein Format auf B-Splines - die Hilfe für glMap1 schreibt aber etwas von Bernsteinpolynomen. Wenn ich das auf die Schnelle richtig sehe, muss bei NURBS das passende dabei sein... Wenn nicht, kommst Du wohl um selber alle Punkte berechnen nicht herum


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 22, 2013 21:41 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
erstmal danke für die Antwort, das mit den nurbs kurven macht doch hoffnung!!! denn da gibts auch diese ominösen none-decreasing knots!

nur irgendwie bekomme ich keinerlei ausgabe zustande.. ich scheine irgendwas grundlegend falsch zu machen?

Code:
  1. procedure TIgesCurve.drawme;
  2. var
  3.   i:integer;
  4.   werte:integer;
  5.   pnurbsi:PGLUnurbs; // stimmt das so??
  6. begin
  7.   werte := length(fctrlpts);     // hier erstmal 9
  8.   pnurbsi := gluNewNurbsRenderer();   //stimmt das so?
  9.   glColor3f(0.0, 0.0, 1.0);        // farbe blau
  10.   glubegincurve(pnurbsi);  // stimmt das so oder muß hier @pnurbsi hin?
  11.    // die folgende 7 kommt daher das ich gelesen habe das die anzahl der knots = degree+N-1 also ist 15 = degree + 9 -1 =7
  12.   glunurbscurve(pnurbsi,9,@fknotsequencevalues[0],3,@fctrlpts[0].VX,7,GL_MAP1_VERTEX_3);
  13.   gluendcurve(pnurbsi);


muß man mit nurbsproperties was setzen um was zu sehen? wenn ja, was?
ich sehe so jedenfalls nichts.. nichtmal was falsches, da ist garnichts blaues in der szene..


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Apr 23, 2013 19:34 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Tadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!!!!!!!

Bild

ich habs hinbekommen! DANKE! der nurbscurve hinweis war letztlich der entscheidende! danke delphic danke danke danke danke!!!!!!


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


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.024s | 17 Queries | GZIP : On ]